您的位置:首页 > 移动开发 > Android开发

Android初级——Activity状态、周期、启动模式

2017-05-16 15:56 369 查看

什么是Activity

通过界面与用户交互的组件。

Activity的四种状态

1.Active/Running

新启动一个Activity,此时Activity居于栈顶,可与用户交互。

2.Paused

Activity失去焦点,可见但不可控;一般是被非全屏或全屏透明的Activity覆盖。此时仍与窗口连接器连接,保持状态、成员信息。但是内存很低的时候,会被销毁掉。

3.Stopped

Activity失去焦点,不可见也不可控;完全被其他Activity覆盖,依然保留所有的状态和成员信息。但是在系统内存较低时,会被销毁掉。

4.Killed

Activity被销毁,系统从内存中删除该Activity。

Activity状态图



Activity的周期

Activity的周期和Activity的状态相关,周期如下:



Activity启动:Activity的创建会先后经历onCreate()、onStart()、onResume()

点击返回键:onPause()、onStop()、onDestroy()

下拉手机提示或快捷设置框:onPause()

点击Home键:onPause()、onStop()

Home键退出后,重新进入应用(系统内存充足):onRestart()、onStart()、onResume()

Home键退出后,重写进入应用(系统内存不足):onCreate()、onStart()、onResume()

Activity A跳转到Activity B:A执行 onPuase(),B执行 onCreate()、onStart()、onResume()、A执行onStop()

从Activity B返回到Activity A(系统内存充足):B先执行onPause()、onStop()、onDestroy();然后A执行onRestart()、onStart()、onResume()

从Activity B返回到Activity A(系统内存不足):B先执行onPause()、onStop()、onDestroy();然后A执行onCreate()、onStart()、onResume()

Activity的四种启动模式

1.standard

以该模式启动的Activity,不管栈中是否已经存在,都会重新创建新的实例。系统默认的Activity启动方式即是这种。

应用内或应用外启动,被启动的Activity和发起Intent的Activity处于同一Task中。

2.singleTop

如果task的栈顶已有该Activity的实例,则重新启动该Activity的时候,不会重新创建实例,而是启动栈顶的Activity,并调用它的onNewIntent(),否则的话重新创建Activity实例。

应用内或应用外启动,被启动的Activity和发起Intent的Activity处于同一Task中。

如:有A、B两个Activity,A的启动模式为standard,B的启动模式为singleTop。

如果实现A—>B—>B,则栈中的顺序从底到上为A、B。

如果实现B—>A—>B,则栈中的顺序从底到上为B、A、B。

3.singleTask

Activity只有一个实例,且该实例允许其他Activity与之位于同一个Task

应用内启动时,如果Activity不存在,在当前Task中创建一个新的实例,如果Task中存在该Activity的实例,则将该实例之上的其他Activity全部清除。

应用外启动时,则会创建一个新的Task,并在该Task中启动Activity,如果在Activity中继续启动其他Activity,新的Activity还会位于singleTask模式Activity实例所在的Task中。

singleInstance

Activity只有一个实例,且位于独立的Task中,该Task中只包含singleInstance模式的Activity实例,不包含其他Activity实例。

应用内和应用外启动时,都会创建新的task

参考

http://blog.csdn.net/liuhe688/article/details/6733407

http://blog.csdn.net/shinay/article/details/7898492/

http://droidyue.com/blog/2015/08/16/dive-into-android-activity-launchmode/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息