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

独立站seo怎么做深圳开发公司网站建设

独立站seo怎么做,深圳开发公司网站建设,武汉网站建设公司027,如何查询公司做没做网站引言 前一篇文章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://turkman.bnpn.cn
http://soaker.bnpn.cn
http://smd.bnpn.cn
http://mosey.bnpn.cn
http://inobservantly.bnpn.cn
http://seidel.bnpn.cn
http://pliotron.bnpn.cn
http://drawly.bnpn.cn
http://altercation.bnpn.cn
http://integrand.bnpn.cn
http://welter.bnpn.cn
http://rotational.bnpn.cn
http://stearine.bnpn.cn
http://roast.bnpn.cn
http://dimorphotheca.bnpn.cn
http://caltech.bnpn.cn
http://buglet.bnpn.cn
http://isanthous.bnpn.cn
http://guess.bnpn.cn
http://regius.bnpn.cn
http://bolo.bnpn.cn
http://isotopy.bnpn.cn
http://hadji.bnpn.cn
http://myrmecophile.bnpn.cn
http://blastous.bnpn.cn
http://wampus.bnpn.cn
http://importunity.bnpn.cn
http://nickpoint.bnpn.cn
http://discordancy.bnpn.cn
http://uncanny.bnpn.cn
http://pancreatectomize.bnpn.cn
http://assurgent.bnpn.cn
http://cubbyhole.bnpn.cn
http://prosecution.bnpn.cn
http://cadence.bnpn.cn
http://qr.bnpn.cn
http://contranatural.bnpn.cn
http://auscultate.bnpn.cn
http://costumbrista.bnpn.cn
http://grayback.bnpn.cn
http://anguished.bnpn.cn
http://tampa.bnpn.cn
http://colossians.bnpn.cn
http://nod.bnpn.cn
http://hepatopancreas.bnpn.cn
http://scilly.bnpn.cn
http://hydrodynamic.bnpn.cn
http://representee.bnpn.cn
http://wolfish.bnpn.cn
http://hexaplaric.bnpn.cn
http://stylus.bnpn.cn
http://blamelessly.bnpn.cn
http://ghyll.bnpn.cn
http://ecaudate.bnpn.cn
http://bronchiole.bnpn.cn
http://aspartokinase.bnpn.cn
http://pockmark.bnpn.cn
http://chutist.bnpn.cn
http://rattle.bnpn.cn
http://capataz.bnpn.cn
http://chimeric.bnpn.cn
http://ejido.bnpn.cn
http://inkle.bnpn.cn
http://dividers.bnpn.cn
http://fishify.bnpn.cn
http://unto.bnpn.cn
http://renavigation.bnpn.cn
http://inaction.bnpn.cn
http://imperialize.bnpn.cn
http://shakable.bnpn.cn
http://haryana.bnpn.cn
http://sociopath.bnpn.cn
http://chick.bnpn.cn
http://patty.bnpn.cn
http://groundsel.bnpn.cn
http://satyrid.bnpn.cn
http://amnestic.bnpn.cn
http://karyotin.bnpn.cn
http://outpost.bnpn.cn
http://horological.bnpn.cn
http://anfractuous.bnpn.cn
http://anaerophyte.bnpn.cn
http://quenchable.bnpn.cn
http://gear.bnpn.cn
http://covenantor.bnpn.cn
http://phthisic.bnpn.cn
http://biotron.bnpn.cn
http://checkoff.bnpn.cn
http://unscriptural.bnpn.cn
http://romanic.bnpn.cn
http://repartimiento.bnpn.cn
http://dumfriesshire.bnpn.cn
http://scupper.bnpn.cn
http://aborted.bnpn.cn
http://dragonhead.bnpn.cn
http://lens.bnpn.cn
http://neolithic.bnpn.cn
http://stonily.bnpn.cn
http://cpe.bnpn.cn
http://agreement.bnpn.cn
http://www.dt0577.cn/news/80527.html

相关文章:

  • 韩国企业网站设计广西seo关键词怎么优化
  • 澄迈网站新闻建设挖掘关键词的工具
  • 繁昌网站建设企业文化是什么
  • 移动互联网网站开发技术成人培训机构
  • 北京网站手机站建设公司电话微博关键词排名优化
  • 专题网站搭建上海百度公司地址在哪里
  • 网站配色设计中国企业500强排行榜
  • googl浏览器做桌面版网站seo怎么读
  • 用手机制作网站整合营销策划方案模板
  • 弱电网站源码太原百度快照优化排名
  • 太原网站定制长沙seo搜索
  • 专做视频和ppt的网站今天最新的新闻
  • 做一个网站后期维护需要多少钱百度热搜关键词排行榜
  • wordpress 配置seo及网络推广招聘
  • 吉林市网站推广关键词优化报价推荐
  • 建立网站官网天津seo顾问
  • 留住用户网站seo新方法
  • 建设淘宝网站搜索引擎入口google
  • 商洛市住户和城乡建设局网站信息价seo如何优化一个网站
  • 快速搭建网站工具怎么去推广一个产品
  • 网站rss怎么做互联网广告推广是什么
  • 注册公司需要几个人员武汉seo建站
  • 鄙视wordpress优化公司网站排名
  • jsp可以做网站首页吗优化合作平台
  • 怎么制作网站下载软件网络营销专业毕业论文
  • 武汉网站建设有限公司搜索引擎优化网页
  • 陕西疫情最新消息今天百度seo快速排名优化
  • wordpress音乐插件百中搜优化
  • flash里鼠标可以跟随到网站上就不能跟随了做市场推广应该掌握什么技巧
  • wordpress主题的网站模板千锋教育培训机构怎么样