a.mDecor=decor;//把DecorView加到WindowManager里面,后面看看这个函数wm.addView(decor, l); }//让它变得可见,这里不重要,只是触发了一次重绘,//mDecor.setVisibility(View.VISIBLE);//真正重要的是谁启动和管理整个View绘制的流程r.activity.makeVisible(); }voidaddView(View view, ViewGroup.LayoutParams param...
每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1-->Activity2-->Activity3,则任务栈为: 二、启动模式 (1)standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈; (2)singleTop:如果某个Activity自己激活自己,即任务栈栈顶...
在App1的Activity A中点击button 启动 App2中的Activity B。 通过分析以上ActivityB的启动过程来了解AMS对Activity的管理逻辑。 步骤1:Activity A告诉AMS服务准备启动Activity B 步骤2:AMS服务处理并通知Activity A所在的进程pause Activity A,Activity A所在的进程处理完毕之后。通知AMS服务Activity A已经完毕pause工作。
Activity启动阶段 1.回到Application步骤分析3:AMS回调thread.bindApplication的方法后,在bindApplication的方法执行完成后,会继续回调mStackSupervisor.attachApplicationLocked(app)这个方法中:获取当前进程的第一个非LauncherActivity,然后调用realStartActivityLocked去启动根Activity。 2.然后就是创建Activity,并执行Activity生命...
生命周期:Process.start->Application创建->attachBaseContext->onCreate->onStart->onResume->Activity生命周期 启动速度:在几种启动类型中最慢,也是我们优化启动速度最大的拦路虎 温启动 场景:应用已经启动,返回键退出 生命周期:onCreate->onStart->onResume->Activity生命周期 ...
被SystemServer进程启动的ActivityManagerService会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。 系统进程的启动顺序: Init进程-->Zygote进程-->SystemServer进程-->应用进程(Launcher) 系统启动流程.jpg 2. init 进程总结 1).init进程创建: init是最早的进程,通过脚本拉起来 ...
注释1:通知ActivityThread启动application; 注释2:调用ActivityStackSupervisor,启动第一个Activity; 3.2ActivityStackSupervisor 启动Activity: booleanattachApplicationLocked(ProcessRecordapp)throwsRemoteException{//获取应用的进行名称finalStringprocessName=app.processName;booleandidSomething=false;for(intdisplayNdx=mActivityDi...
1.activity堆栈流程以及四种启动模式 一个应用由多个Activity构成,多个Activity构成了任务,系统以栈方式进行管理任务(也就是管理多个Activity),管理方式为“先进后出”。 默认情况下,当用户点击App图标后,启动应用,这时会创建一个任务栈,并且将MAIN Activity压入栈中,作为栈底Activity。之后每启动一个Activity,就会将这个...
2、热启动:耗时最短,将activity从后台带到前台;(热恋中的女人) 3、温启动:耗时较长,重走了Actiivty的生命周期。(结婚后的女人) 从应用的启动状态中,我们可以分析得出,剥除系统本身的任务动作外(这部分我们是无法进行操作修改的),其实我们的启动优化方向主要就是:Application和Activity的生命周期、主视图的布局优化...