Activity典型情况下的的生命周期分析

Activity典型情况下的的生命周期分析

Activity
  • onCreate:表示activity正在启动
  • onRestart: 表示activity正在重新启动
  • onStart:表示正在被启动,已经可见,但是未出现在前台,无法和用户交互
  • onResume:表示activity已经可见,onStart的时候activity还在后台,onResume才显示到前台
  • onPause:表示activity正在停止,正常情况下紧接着onStop就会调用。在特殊情况下,如果这个时候快速地再回到当前activity,那么onResume会被调用,保持所有状态信息和成员变量。
  • onStop:表示activity即将停止,可以做一些稍微重量级的回收工作,但同样不能太耗时,依然保持所有状态信息和成员变量。
  • onDestroy:表示activity即将被销毁,是activity生命周期中的最后一个回调,可以做一些回收工作和最终的资源释放
    在这里插入图片描述
  • onStart和onStop是从activity是否可见这个角度来回调的
  • onResume和onPause是从activity是否位于前台这个角度来回调的
  • 假设当前Activity为A,这时当用户打开一个新ActivityB,那么旧Activity的onPause先调动,然后新Activity才启动
Androidmanifest启动模式
standard

标准模式,默认的启动模式,如果不指定Activity 的启动模式,则使用这种方式启动Activity。这种启动模式每次都会创建新的实例,每次点击 standard 模式创建Activity后,都会创建新的MainActivity覆盖在原Activity 上

singleTop

如果指定启动Activity为singleTop模式,那么在启动时,系统会判断当前栈顶Activity是不是要启动的Activity,如果是则不创建新的Activity而直接引用这个Activity;如果不是则创建新的Activity。

singleTask

singleTask是检测整个Activity栈中是否存在当前需要启动的Activity。如果存在,则将该Activity 置于栈顶,并将该Activity 以上的 Activity都销毁。

singleInstance

申明为singleInstance的Activity会出现在一个新的任务栈中,而且该任务栈中只存在这一个Activity。(不能在一个singleTop或singleInstance的activity不能使用startActivityForResult())

Intent Flag启动模式
Intent intent=new Intent();
intent.setFlags(int flags);
  • Intent.FLAG_ACTIVITY_NEW_TASK
    使用一个新的Task来启动一个Activity,但启动的每个Activity都将在一个新的Task中。该Flag通常使用在从Service中启动Activity的场景,由于在Service中并不存在Activity栈,所以使用该Flag来创建一个新的Activity栈,并创建新的Activity实例。

  • Intent.FLAG_ACTIVITY_SINGLE_TOP
    使用singletop模式来启动一个Activity,与指定android:launchMode="singleTop"效果相同。

  • Intent.FLAG_ACTIVITY_CLEAR_TOP
    使用singleTask模式来启动一个Activity,与指定android:launchMode="singleTask"效果相同。

  • Intent.FLAG_ACTIVITY_NO_HISTORY
    使用这种模式启动Activity,当该Activity启动其他Activity后,该Activity就消失了,不会保留在Activity栈中,新活动不会保留在历史栈中,一旦用户切换到其他页面,新活动会马上销毁。

清空任务栈
 <activity android:name=".activity.HideTitleActivity"
            android:clearTaskOnLaunch="true"/>
clearTaskOnLaunch

在每次返回该Activity 时,都将该Activity 之上的所有Activity都清除。通过这个属性,可以让这个Task每次在初始化的时候,都只有这一个Activity。

finishOnTaskLaunch

与clearTaskOnLaunch属性类似,只不过clearTaskOnLaunch作用在别人身上,而finishOnTaskLaunch作用在自己身上。通过这个属性,当离开这个Activity 所处的 Task,那么用户再返回时,该Activity就会被finish掉。

alwaysRetainTaskState

如果将Activity的这个属性设置为True,那么该Activity所在的Task将不接受任何清理命令,一直保持当前Task状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值