ActivityManagerService
主要包含三个功能:Activity管理,进程管理(activity在退出时,其所在的进程不会被停止,这样可以提高下次的启动速度,只有系统内存不够时,才会被自动杀死),内存管理
主要包含重要数据:都是形如XXXRecord的数据,如ProcessRecord(apk进程管理),HistoryRecord(activity管理,本身是Binder,和IPC进行交互),TaskRecord(Activity的启动和退出顺序管理,task不直接接触activity,在task变化时,是通过HistoryRecord对TaskRecord的引用实现)
1.activity启动管理模式:优先启动,然后停止。比如由A->B,先执行A.onPause,然后B.onCreate,B.Onstart,B.onResume,最后执行A.onStop.。即先把A暂停,然后启动B,再回过头来停止A。
2.默认的activity(没有destory的)个数是20个。
3.系统默认的onPause函数的执行时间是500ms,如果超过这个时间,会强制结束,所以在onPause中尽量不要做耗时操作。
内存管理:
Activity回收顺序:后台空进程 -> 后台activity -> 包含前台的service或provider -> 前台activity
Activity退出,其对应的进程不退出,会进入到sleep状态,并且不会影响到其他应用的运行速度
原因:在Linux内核调度中,如果一个线程状态是sleep,除了占用调用本身的时间外,不会占用cpu时间片,因此,系统运行1个进程和100个进程的速度是相同的,只要其他99个进程状态是sleep。
主要包含三个功能:Activity管理,进程管理(activity在退出时,其所在的进程不会被停止,这样可以提高下次的启动速度,只有系统内存不够时,才会被自动杀死),内存管理
主要包含重要数据:都是形如XXXRecord的数据,如ProcessRecord(apk进程管理),HistoryRecord(activity管理,本身是Binder,和IPC进行交互),TaskRecord(Activity的启动和退出顺序管理,task不直接接触activity,在task变化时,是通过HistoryRecord对TaskRecord的引用实现)
1.activity启动管理模式:优先启动,然后停止。比如由A->B,先执行A.onPause,然后B.onCreate,B.Onstart,B.onResume,最后执行A.onStop.。即先把A暂停,然后启动B,再回过头来停止A。
2.默认的activity(没有destory的)个数是20个。
3.系统默认的onPause函数的执行时间是500ms,如果超过这个时间,会强制结束,所以在onPause中尽量不要做耗时操作。
内存管理:
Activity回收顺序:后台空进程 -> 后台activity -> 包含前台的service或provider -> 前台activity
Activity退出,其对应的进程不退出,会进入到sleep状态,并且不会影响到其他应用的运行速度
原因:在Linux内核调度中,如果一个线程状态是sleep,除了占用调用本身的时间外,不会占用cpu时间片,因此,系统运行1个进程和100个进程的速度是相同的,只要其他99个进程状态是sleep。