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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值