Activity启动及匹配

2017-09-02  本文已影响39人  liaowenhao

Activity生命周期

onStart/onResume这两个配对方法是从Activity是否可见的角度来回调的。
onResume/onPause是从Activity是否位于前台这个角度来回调的。
onCreate/onDestroy标志Activity的创建和销毁,并且只可能有一次调用。

启动Activity涉及的流程

启动Activity的请求会由Instrumentation处理。
Instrumentation通过Binder向AMS发送请求。
AMS内部维护着一个ActivityStack,并负责栈内的Activity的状态同步。
AMS通过ActivityThread去同步Activity的状态而完成生命周期方法的调用。

注意事项:
不能在onPause中进行重量级操作的原因:
必须当前页面执行完onPause操作,新Activity才能Resume.

异常情况处理

默认情况,当系统配置发生变化(横竖屏切换等),Activity会被销毁重建。系统会默认保存当前Activity的视图结构(EditText输入数据,ListView滚动位置等),原因是每个View都有对应的onSaveInstanceState/onRestoreInstanceState方法。

onSaveInstanceState调用时机:
只有Activity被异常终止的情况下才会回调(比如横竖屏切换),调用时机在onStop之前,和onPause没有既定的时序关系。有机会看源码
onRestoreInstanceState的调用时机在onStart之后。一旦被调用,其参数Bundle savedInstanceState一定是有值的。

内存不足情况处理

当系统内存不足时,按照以下优先级杀死目标Activity所在进程:

  1. 前台Activity
  2. 可见但非前台Activity
  3. 后台Activity

启动模式

IntentFilter匹配规则

只有Intent同时匹配action/category/data才算完全匹配。

过滤规则中action为MAIN且category为LAUNCHER共同用于标明这是个入口Activity且会出现在系统的应用列表中。

Android API level及Android version一览

上一篇 下一篇

猜你喜欢

热点阅读