当前位置: 首页 > news >正文

电子商务网站策划书3500字网站建设确认表

电子商务网站策划书3500字,网站建设确认表,北京网站被处罚,临西县建设网站引言 前一篇文章Android 进阶——图形显示系统之底层图像显示原理小结(一)介绍了关于Android 图形显示系统的基础理论,相信你对于Android的图形显示系统中图形界面渲染刷新机制有了更深的了解,接下来进一步讲解VSync和Choreography的联系和作用。 一、VSync 信号的产生概…

引言

前一篇文章Android 进阶——图形显示系统之底层图像显示原理小结(一)介绍了关于Android 图形显示系统的基础理论,相信你对于Android的图形显示系统中图形界面渲染刷新机制有了更深的了解,接下来进一步讲解VSync和Choreography的联系和作用。

一、VSync 信号的产生概述

VSync 可以提升Android 图形显示效果,VSync信号一般是由底层硬件直接产生并由显示驱动程序向应用层上报,但是为了兼容在不支持硬件VSync 机制设备上也能高效地展示Android,也提供了软件模拟方案产生VSync信号——通过HWComposer(模拟硬件显示设备的类)在间隔固定时间(纳秒级别)发送消息给EventHandler处理。

1、HWComposer

在HWComposer的构造函数里,初始化EventHandler进而动态装载HWComposer的硬件模块初始化硬件回调上下文指针。

由SurfaceFlinger 去创建和管理

HWComposer::HWComposer(const sp<SurfaceFlinger>& flinger): mFlinger(flinger),mAdapter(),mHwcDevice(),mDisplayData(2),mFreeDisplaySlots(),mHwcDisplaySlots(),mCBContext(),mEventHandler(nullptr),mVSyncCounts(),mRemainingHwcVirtualDisplays(0)
{...loadHwcModule();
}

当HWComposer::vsync函数触发时就模拟发送VSync 模拟信号(消息)。

void HWComposer::vsync(const std::shared_ptr<HWC2::Display>& display,int64_t timestamp) {...mEventHandler->onVSyncReceived(disp, timestamp);
}

2、EventHandler

class HWComposer
{public:    class EventHandler {friend class HWComposer;virtual void onVSyncReceived(int32_t disp, nsecs_t timestamp) = 0;virtual void onHotplugReceived(int32_t disp, bool connected) = 0;protected:virtual ~EventHandler() {}};...
}

二、Choreographer

1、Choreographer概述

前面我们知道仅仅依靠VSync 机制无法确保最优的显示效果,因为绘制是随机的,我们必须要还要制定一些规则控制绘制,于是乎Android 引入了一个很艺术的角色——Choreographer 中文意思是编舞者,顾名思义对舞蹈动作进行编排控制(此处老外还是挺浪漫的把UI的绘制看成是一场舞蹈,而Choreography 就是这场舞蹈动作的编舞者),Choreographer 处理VSync 信号并指导CPU/GPU开始计算/绘制,确保了收到VSync 信号时才开始进行绘制,避免了绘制的随机性。简而言之Choreographer监听处理VSync信号通知并协调应用进行屏幕刷新,即实现了 “Drawing with VSync”

Google在Android 4.1系统中对Android Display系统进行了优化:在收到VSync pulse后,将马上开始下一帧的渲染。即一旦收到VSync通知,CPU和GPU就立刻开始计算然后把数据写入Buffer。通常应用层不会直接使用Choreographer,而是使用更高级的API,例如动画和View绘制相关的ValueAnimator.start()、View.invalidate()等,业界一般通过Choreographer来监控应用的帧率。

2、 触发Choreographer的创建

2.1、Activity启动后通过ActivityThread#handleResumeActivity触发Activity#onResume方法回调

final void handleResumeActivity(IBinder token,boolean clearHide, boolean isForward, boolean reallyResume, int seq, String reason) {ActivityClientRecord r = mActivities.get(token);// TODO Push resumeArgs into the activity for considerationr = performResumeActivity(token, clearHide, reason);//触发onResume方法if (r != null) {final Activity a = r.activity;if (r.window == null && !a.mFinished && willBeVisible) {r.window = r.activity.getWindow();View decor = r.window.getDecorView();decor.setVisibility(View.INVISIBLE);ViewManager wm = a.getWindowManager();WindowManager.LayoutParams l = r.window.getAttributes();a.mDecor = decor;l.type = WindowManager.LayoutParams.TYPE_BASE_APPLICATION;if (r.mPreserveWindow) {a.mWindowAdded = true;r.mPreserveWindow = false;ViewRootImpl impl = decor.getViewRootImpl();if (impl != nu
http://www.yayakq.cn/news/926380/

相关文章:

  • 做网站很赚钱吗欧莱雅旗下品牌
  • 网站备案是给什么进行备案网站开发工程师ppt
  • 网站建设工资网站做代理需要空间是多少钱
  • 团队氛围建设 网站c语言程序设计网站
  • 企业网站的在线推广方法有企业网站建设宣贯
  • 有什么教做甜品的网站英文公司网站建设
  • 泉州模板开发建站泰州制作公司网站
  • 网站有哪些后台南宁 网站建设 制作
  • server2003网站建设东莞网站建设咨询
  • 下载建设银行官方网站下载安装如何自己做网站手机
  • 山东网站定制策划荥阳网站制作
  • 网络科技有限公司和科技有限公司的区别seo计费管理系统
  • 做外贸网站一定要会英语吗网站建设成果
  • 淘宝客怎么做网站广州h5网站建设
  • php网站后台搭建丽江手机网站建设
  • 张家界网站建设app网站建设客户分析调查表文档
  • 网站制作建设哪家公司好网站开发深
  • 做网站网站需要多少钱无法登陆建设银行网站
  • 怎么建个私人网站网络营销推广公司简介
  • 杭州自助建站软件wordpress安装条件
  • 做网站每一步的是什么网络服务禁用后如何启动
  • 建立个人网站流程深圳网站开发公司h5
  • 用php做网站难吗安卓app开发框架
  • 青岛网站建设青岛新思维建筑公司发展愿景
  • 班级网站主页设计模板福田网站建设费用明细
  • 北京网站建设解决方案深圳中装建设集团有限公司
  • 四川省建设厅官方网站三内人员重庆特种作业证件查询
  • 网站添加邮件发送怎么做视频剪辑线下培训班
  • 孝感网站的建设青岛城阳网站开发
  • 浙江台州网络设计网站辽宁省城乡建设厅网站