Activity的四种状态和启动模式

本文深入解析Android中Activity的四种状态(Active/Running、Paused、Stopped、Killed)及状态转换过程,同时详述四种启动模式(standard、singleTop、singleTask、singleInstance)的使用方法与特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activity的四种状态

1. Active/Running

当一个Activity被创建后,完全显示在屏幕的最前端,且可以执行交互。该Activity位于Activity任务栈的栈顶。依次经过生命周期的回调onCreate()->onStart()->onResume(),执行完onResume()回调后,该Activity处于Running状态,即运行状态。

onCreate():在系统首次创建Activity时触发。这个回调方法必须被实现,而其它回调方法可以不强制要求实现,可以根据自己的需要实现。在这个方法里一般进行声明界面(setContentView(View)),绑定视图findViewById(int),初始化成员变量。若Bundle参数不为null通过Bundle参数恢复数据。执行完onCreate()后,该Activity处于"以开始状态",接下来依次执行onStart()onResume()回调方法。

2. Paused

当前Activity失去焦点时,一个非全屏的Activity或者是半透明的Activity放置到栈顶时,虽然仍然部分可见,但已经不能再和用户进行交互。他仍然与窗口管理器保持联系,保持所有的状态和成员信息。

3. Stopped

当被另一个Activity完全覆盖,不可见时进入Stopped状态,仍然保持着状态和成员信息。无法与用户进行交互

4. Killed

如果一个Activity处于Paused或Stopped状态,系统可以将它从内存中删除,有两种删除方法,一种是要求它自己结束,一种是直接停止该Activity的线程。被销毁的Activity再次显示给用户时需要重新加载。

状态转换

来自百度

Activity启动模式

Activity启动模式一共有四种:

  • standard
  • singleTop
  • singleTask
  • singleInstance

standard标准模式

  • 创建没有限制,每次使用intent都是一个新的Activity
  • Activity被创建在启动其的Activity的任务栈顶端
  • Android Lollipop之后,被启动的Activity如果不是同一个应用,会新建一个任务栈

singleTop(单顶)

  • 当顶部已经有相同的Activity时,不会再创建新的实例,而是回调任务栈中已经存在的该Activity的onNewIntent( )方法。
  • 当前Activity位于栈顶,如果想要再创建一个相同的Activity,则不会成功,即保持栈顶该Activity的实例只有一个。
  • 不是栈顶时和standard一样

singleTask(单一任务)

  • Activity在Android系统中只允许存在一个实例。
  • 当想要创建的Activity已经有了实例的时候,会将之前的Activity在其任务栈上位于他之上的所有Activity销毁,以让目标Activity处于栈顶。

singleInstance单例模式

  • 这种启动模式和singleTask几乎一样,它也只允许系统中存在一个目标Activity
  • 但是一个Activity承包了整个任务栈

如何使用

  1. 在AndroidMenifest.xml文件中设置
    - 在<activity>标签中设置android:launchMode="****"属性即可
  2. 通过为Intent添加标识来设置
    - intent.addFlags();
  • FLAG_ACTIVITY_NEW_TASK 与"singleTask"启动模式的作用一样。

  • FLAG_ACTIVITY_SINGLE_TOP
    与"singleTop"启动模式的作用一样。

  • FLAG_ACTIVITY_CLEAR_TOP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值