Android
文章平均质量分 94
SwallowJoe
君子知命不惧,日日自新
展开
-
Binder(4)--binder驱动的加载.md
参考资料简介一. Linux内核init call过程1.1 android/kernel/msm-4.9/init/main.c1.2 android/kernel/msm-4.9/init/main.c:kernel_init_freeable1.3 android/kernel/msm-4.9/init/main.c:do_initcall_level二. binder驱动的初始化2.1 binder.c:binder_init2.1.1 操作函数的定义2.1.2 DE..原创 2020-12-19 15:05:10 · 1499 阅读 · 3 评论 -
Binder(3)--sayHello之ioctl.md
参考资料简介一. IBinder.transact1.1 BinderProxy.transact1.2 android_util_Binder#android_os_BinderProxy_transact1.3 BpBinder#transact1.4 IPCThreadState#transact1.4.1 IPCThreadState#writeTransactionData1.5 IPCThreadState#waitForResponse1.6 IPCThreadS..原创 2020-12-19 15:04:16 · 297 阅读 · 1 评论 -
Binder(2)--sayHello之BinderProxy的创建过程.md
参考资料简介一. asInterface方法1.1 IDemoInterface.Stub.asInterface1.2 Binder.queryLocalInterface1.3 创建IDemoInterface.Stub.Proxy对象二. sayHello2.1 Proxy.sayHello2.2 BinderProxy.transact2.3 android_util_Binder.cpp#android_os_BinderProxy_transact2.3.1 a..原创 2020-11-20 21:07:30 · 907 阅读 · 1 评论 -
Binder(1)--App使用Binder通信.md
参考资料简介一. 在App之间使用Binder通信1.1 创建Interface1.2 实现服务端接口1.3 客户端调用相关类图二. 通信过程2.1 Client=>ContextImpl.bindService2.1.1 LoadedApk.getServiceDispatcher2.2 SytemServer=>AMS.bindIsolatedService2.3 Client=>LoadedApk.ServiceDispatcher.Inner..原创 2020-11-19 21:20:12 · 616 阅读 · 0 评论 -
Android UI架构(十三)--App请求切换帧率(4)之SurfaceFlinger切换帧率.md
文章目录参考资料简述一. SurfaceFlinger接受帧率变化1.1 SurfaceFlinger.setDesiredActiveConfig1.2 SurfaceFlinger.repaintEverythingForHWC1.3 Scheduler.resyncToHardwareVsync1.3.1 Scheduler.setVsyncPeriod1.3.2 VSyncReactor.setPeriod1.3.3 VSyncReactor.startPeriodTransition1.4 VSy原创 2020-10-09 14:42:08 · 4727 阅读 · 1 评论 -
Android UI架构(十二)--App请求切换帧率(3)之SurfaceFlinger计算最佳帧率.md
文章目录参考资料简述一. SurfaceFlinger接受帧率变化1.1 SurfaceControl.setDesiredDisplayConfigSpecs1.1.1 android_view_SurfaceControl.nativeSetDesiredDisplayConfigSpecs1.1.2 SurfaceComposerClient.setDesiredDisplayConfigSpecs1.2 SurfaceFlinger.setDesiredDisplayConfigSpecs1.2.1原创 2020-09-22 00:32:26 · 3168 阅读 · 12 评论 -
Android UI架构(十一)--App请求切换帧率(2)之DisplayModeId.md
文章目录参考资料一. preferredDisplayModeId改变1.1 RootWindowContainer.applySurfaceChangesTransaction1.2 DisplayContent.applySurfaceChangesTransaction()1.3 DisplayContent.mApplySurfaceChangesTransaction1.4 DisplayManagerService.setDisplayProperties二. DisplayModeDirect原创 2020-09-20 20:11:25 · 4289 阅读 · 2 评论 -
Android UI架构(十)--App请求切换帧率(1).md
文章目录参考资料背景查看设备可支持的刷新率和分辨率App设置设备帧率Android Q及以下版本Android R参考资料https://zhuanlan.zhihu.com/p/142212769?from_voters_page=true背景随着手机屏幕硬件能力的提升,越来越多的厂商提供支持多档次刷新率的Android设备。而在Android Q上也是支持App指定当前屏幕帧率的,也有一套帧率分辨率切换的逻辑。查看设备可支持的刷新率和分辨率使用命令:adb shell dumpsys原创 2020-09-20 13:48:45 · 3584 阅读 · 3 评论 -
Android UI架构(九)--探秘刷新动力Vsync(5)之Layer合成composer.md
参考资料[Android Synchronization Fences – An Introduction]http://netaz.blogspot.com/2013/10/android-fences-introduction-in-any.html[Android 4.0.3 显示系统深入理解]https://www.linuxidc.com/Linux/2012-03/55898p4.htm[Clang 10 documentation ATTRIBUTES IN CLANG]https:/原创 2020-06-16 20:18:21 · 3677 阅读 · 0 评论 -
Android UI架构(八)--探秘刷新动力Vsync(4)之Layer&Surface准备.md
参考资料[Android Synchronization Fences – An Introduction]http://netaz.blogspot.com/2013/10/android-fences-introduction-in-any.html[Android中的GraphicBuffer同步机制-Fence]https://blog.csdn.net/jinzhuojun/article/details/39698317[深入浅出Android BufferQueue]https://b原创 2020-06-10 21:08:04 · 2662 阅读 · 2 评论 -
Android UI架构(七)--探秘刷新动力Vsync(3)之AppEventThread接受vsync信号.md
文章目录参考资料一. 前言二. App进程与AppEventThread建立通信过程2.1 Choerographer初始化2.2 FrameDisplayEventReceiver初始化2.3 android_view_DisplayEventReceiver.cpp:nativeInit2.5 DisplayEventDispatcher 初始化2.6 DisplayEventReceiver初始化2.6.1 SurfaceFlinger.createDisplayEventConnection2.6.原创 2020-06-10 20:56:55 · 1146 阅读 · 0 评论 -
Android UI架构(六)--探秘刷新动力Vsync(2)之DispSync.md
文章目录参考资料一. DispSync二. DispSync初始化2.1 SurfaceFlinger2.2 DispSync创建2.3 SurfaceFlinger::SurfaceFlinger2.4 DispSync.init2.4.1 DispSyncThread.threadLoop三. enableVysncLocked后续3.1 DispSync.addEventListener3.2 DispSync.DispSyncThread.addEventListener四. setPeriod4.原创 2020-06-01 21:33:12 · 1664 阅读 · 1 评论 -
Android UI架构(五)--探秘刷新动力Vsync(1)之EventThread.md
文章目录参考资料一. SFEventThread1.1 BitTube二. EventThread启动2.1 SurfaceFlinger.init2.2 EventThread初始化2.3 EventThread.threadMain2.4 EventThread.waitForEventLocked2.5 EventThread.Connection.postEvent三. SF EventThread 添加Connection3.1 SurfaceFlinger.init3.2 MessageQueu原创 2020-05-30 15:35:18 · 1656 阅读 · 0 评论 -
Android UI架构(四)--SurfaceFlinger的初始化.md
参考:Vysnc虚拟化Android SurfaceFlinger SW Vsync模型Android SurfaceFlinger服务的消息队列创建过程分析Android6.0 显示系统(六) 图像的输出过程Android图形显示系统(一)文章目录一、SurfaceFlinger的启动1.1 surfaceflinger.rc1.2 main_surfaceflinger.cpp:main()1.3 实例化SurfaceFlinger1.3.1 SurfaceFling原创 2020-05-30 15:16:27 · 2268 阅读 · 0 评论 -
简述RecyclerView的fling过程
我们以RecyclerView为例,研究一下ListView是怎么滑动并且更新view的。首先可以肯定的是以Choreographer为基础实现的。一、fling过程研究fling动作是由input事件触发的。1.1 RecyclerView.onTouchEvent @Override public boolean onTouchEvent(MotionEvent e) { if (mLayoutFrozen || mIgnoreMotionEventTillDow原创 2020-05-30 14:50:01 · 3285 阅读 · 2 评论 -
Android开机动画的显示(一)
文章目录参考博客一、 Linux内核的启动画面1.1 frame buffer初始化1.2 fbmem.c:register_framebuffer(struct fb_info*)1.2.1 fb_notify.c:fb_notifier_call_chain(unsigned long,void*)1.2.2 notifier.c:blocking_notifier_call_chain(st...原创 2018-10-01 14:49:54 · 2356 阅读 · 0 评论 -
Android开机动画的显示(二)
文章目录参考博客一、代码流程1.1 AMS.systemReady1.2 AMS.startHomeActivityLocked1.2.1 AMS.getHomeIntent1.3 Activity启动准备完毕1.3.1 ActivityStack.activityIdleInternal1.3.2 AMS.postFinishBooting1.3.3 AMS.enableScreenAfterB...原创 2018-10-01 14:53:14 · 3007 阅读 · 0 评论 -
Andorid UI架构(一)--FrameBuffer&Gralloc.md
文章目录参考资料一、帧缓冲区FrameBuffer的驱动程序分析二、Android图形显示之硬件抽象层Gralloc参考资料Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析FrameBuffer驱动程序分析Android图形显示之硬件抽象层Gralloc对驱动层不了解,主要是看上面的博客,顺便总结下。Android系统作为一个l...原创 2018-10-01 14:56:01 · 1046 阅读 · 0 评论 -
Android开机流程(一)
参考文章Android系统开篇一、概述简单梳理下Andorid启动流程。一般操作系统启动流程如下图:Android系统启动流程概览:system_server服务启动流程启动过程: Loader -> Kernel -> Native -> Framework -> App1.1 Loader层Boot ROM: 当手机...原创 2018-10-04 13:17:01 · 13383 阅读 · 7 评论 -
Android开机流程(二)--简单的性能分析技巧.md
文章目录参考资料一、通过Log文件分析1.1 event.log1.2 android.log二、通过systrace分析2.1 抓取开机systrace的步骤参考资料这里简单分享下如何分析开机速度的问题。有如下方法:通过android.log 和 event.log通过systrace通过bootchartbootchart方法暂时不研究,用的也不多,主要是log和s...原创 2019-03-17 11:54:21 · 1532 阅读 · 0 评论 -
Android UI架构(二)--Activity的显示(1).md
文章目录参考资料一. 类图二. Activity的UI创建流程2.1 ActivityThread.handleLaunchActivity2.2 ActivityThread.performLaunchActivity2.3 Activity.attach2.4 PhoneWindow.setWindowManager -- 创建WindowManager对象三. Activity的UI绘制3....原创 2019-03-17 12:00:37 · 660 阅读 · 0 评论 -
Android UI架构(三)--Activity的显示(2).md
文章目录参考资料一、SurfaceSession的创建1.1 SurfaceSession 的创建1.2 android_view_SurfaceSession.cpp:nativeCreate1.3 SurfaceComposerClient.cpp 的创建1.4 SurfaceComposerClient.cpp:ComposerService:getComposerService1.4.1 ...原创 2019-03-23 19:46:10 · 370 阅读 · 0 评论