
Android Framework
文章平均质量分 90
汤坤Sunshine
微笑人生~
展开
-
八. WMS原理分析
是一个View控件,他单独拥有一个画布Canvas,正常情况下是一个窗口Window(比如:我们的应用程序窗口,也就是是一个Activity中的PhoneWindow窗口)拥有一个画布Canvas;当我们的系统帧速率跟不上屏幕刷新率的速度时,假如屏幕刷新率时候60HZ,但是系统帧速率是10PFS,也就是说屏幕原本1秒中可以刷新60帧,但是现在只提供给了10帧给屏幕刷新,就会造成刷新完10帧后,最终停留在第10帧画面上,1s-1s/6=5/6s的剩余时间都卡在了第10帧画面上,给用户带来的视觉体验就是卡顿.原创 2023-05-17 01:08:35 · 502 阅读 · 0 评论 -
七. WindowManager对窗口的操作
Window在Android视图体系中,Window就是一个窗口的概念.Android中所有的视图都是依赖于Window显示的.对Window进行管理,包括新增、更新和删除等.WMS窗口的最终管理者,他负责窗口的启动、添加和删除,另外窗口的大小和层级也是由WMS进行管理的.原创 2023-05-16 17:24:30 · 798 阅读 · 0 评论 -
六. Activity启动模式
Activity属于App进程,但是Task属于操作系统,Task里面的Activity可以是属于不同的App的,所以App之间是可以相互调用的.比如:App里面可以使用打电话、地图等.当我们查看手机后台运行的程序,他们其实就是一个个任务栈。onCreate和onStart的区别?onStart和onResume的区别?onStop和onDestory的区别?onPause和onStop的区别?,我们平时可能会把他认为是一个个。原创 2023-05-15 16:20:52 · 586 阅读 · 0 评论 -
五. AMS实践,Hook启动未注册的Activity
保活、让部分业务逻辑存在一个新的任务栈中,防止对我们原有的任务栈造成影响等.,就可以启动未注册的页面,不过这里要注意版本适配问题,因为不同的。存在两个后台程序,但是他们属于同一个进程.不在同一个任务栈里面了,当我们把。,达到改变原有的执行流程的目的.)里面的,也就是我们app的。进程时,就会发现我们当前的。中包含一个或者多个任务栈(都是运行在同一个任务栈()中可以存放不同的进程(运行在不同的任务栈呢?退到后台,查看后台的。进程中都包含了很多的。原创 2023-05-15 13:28:34 · 973 阅读 · 0 评论 -
四. AMS源码分析
AMS类中包含一个管理进程的变量mProcessList,ProcessList是用来管理手机中所有的App进程的,每一个App进程就是一个ProcessRecord,而ProcessRecord中包含一个变量(IApplicationThread)thread,IApplicationThread相当于是一个Server端的IBinder对象,我们将这个IBinder对象注册到AMS中去;)即可与App进程实现跨进程通信,从而实现AMS对每一个App进程的管理.个进程,不同的进程进间采取了。原创 2023-05-12 17:55:31 · 1821 阅读 · 0 评论 -
三.Android系统的启动流程
扩展:Android.mk(旧)->Android.bp(新) 脚本文案,用于代码编译;启动init进程的init文件,也就是手机系统system/bin/init文件,是通过Android.bp编译init/main.cpp文件生成的,所以我们可以通过init/main.cpp文件去研究init进程的启动流程.首先,init进程是由idle进程启动的,而idle进程是属于kernel层的,所以我们从kernel层去寻找启动init进程的地方.),通过执行这个命令就会去启动zygote进程;原创 2023-05-12 12:20:54 · 1323 阅读 · 0 评论 -
二.Binder原理分析
在android中我们所使用的Activity、Service等组件都需要和AMS(SystemServer进程)通信,这种跨进程的通信都是通过Binder完成.Binder驱动是在Zygote进程创建后创建的,每一个进程创建的同时都会创建Binder驱动,用于与别的进程实现跨进程通信.虚拟机分配给每个进程的资源是有限的,LMK(Low Memory Killer)优先回收系统资源占用多的进程.ServiceManager是一个Native层的进程,由init进程创建,早于zygote进程启动.原创 2023-05-12 11:55:15 · 454 阅读 · 0 评论 -
一.Handler消息机制原理分析
注意:在View绘制流程中,也就是ViewRootImpl的scheduleTraversals()方法中,会先发送屏障消息,然后发送异步消息,这两条消息获取的时间是当前时间戳,所以在添加到消息队列中,屏障消息先添加,会插入到消息队列的头部;处理,这样处理的目的是为了保证添加消息和取消息的互斥性,保证了添加消息和取消息不能同时进行;从消息队列中取消息过程中,消息队列中没有消息时,从消息队列中取消息的过程就会进入到休眠状态.方法不停轮询消息时,从消息队列中取出消息在处理完后,会将这个消息中的数据清空。原创 2023-05-12 11:32:06 · 1737 阅读 · 0 评论