什么是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/