Activity启动过程记录
发布网友
发布时间:2022-12-23 08:27
我来回答
共1个回答
热心网友
时间:2023-07-13 08:45
当目标Activity所属的进程已创建,则下一步调用到AT.scheleResumeActivity;
当目标Activity所属的进程未创建,则先创建进程后,再调用AT.scheleLaunchActivity
将Window相应task移至顶部,并创建AppWindowToken对象
创建LoadedApk对象;
创建ComponentName对象;
获取ClassLoader;
创建目标Activity对象;
创建Application对象;
回调onCreate(),一般地该方法内执行setContentView()操作;
获取activity的WindowManager
把actvitity的decorview设置INVISIBLE添加上去addview->mWindowSession.addToDisplay->WMS.addWindow
makeVisible
activityResumed
updateFocusedWindowLocked来更新聚焦窗口情况
AMS通过binder最终通知ApplicationThread,进而通知主线程,ActivityThread通过H.handleMessage()来控制Activity的生命周期。
ActivityThread.handleConfigurationChanged
Application.onCreate
Activity.onCreate
Activity.onRestoreInstanceState
Activity.onRestart
Activity.onStart
Activity.onResume
Activity.onRestart
Activity.onStart
Activity.onResume
Activity.onSaveInstanceState
Activity.onPause
Activity.onSaveInstanceState
Activity.onStop
trimApplications() kill空进程并且更新进程的Adj值
Activity.onDestroy
检查第一个没有结束的activity 如没有显示launcher
Activity.onPause
Activity.onNewIntent
Activity.onRestart
Activity.onStart
Activity.onResume