Android Activity的创建与回收


Android 是通过任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合。

每一个任务都有一个id标记,我们既可以把它看做是任务的ID,也可以看做是栈的ID,可通过getTaskId()来查看。


活动的几种状态


1. 运行状态

活动处于栈顶,用户能够看见,能够与用户进行交互。


2.暂停状态

此时活动不在栈顶,但是活动仍然可见,但是不能与用户进行交互。

之所以出现这种情况是因为用户在活动A上打开了一个新的活动B,但是这个活动没有占满屏幕,导致活动A仍然可见。

其实日常中更多的情况是打开活动B,活动B占满整个屏幕,活动A不可见,这时活动A就不是暂停状态,而是停止状态了。


3.停止状态

活动不处于栈顶状态,且完全不可见。

系统会为该活动保存相应的状态和成员变量,但是这不是可靠地,当系统需要内存时,可能会回收处于停止状态的活动。


4.销毁状态

活动从栈中移除,系统回收该活动占用的内存。


Activity中定义的几个回调方法调用顺序介绍

1.新打开一个程序

onCreate() --> onStart() --> onResume()


2.在活动A上打开活动B

需要分几种情况处理

  • 打开活动B后,活动A不可见
活动A: onPause() --> onStop()
活动B: onCreate() --> onStart() --> onResume()
  • 打开活动B后,在活动B下方仍然可以看到活动A
活动A: onPause()
活动B: onCreate() --> onStart() --> onResume()

3.退出活动B,回到活动A
活动B:onPause() --> onStop() --> onDestroy()
活动A:onRestart() --> onstart() -- > onResume() (若之前活动A不可见)
活动A:onResume() (若之前活动A仍然可见)




活动的启动模式
1.standard
standard是活动的默认启动模式,每次启动一个活动都会返回该活动的一个新的实例,并且在返回栈中入栈,而不管该活动在栈中是否已经存在实例。

2.singleTop

在启动活动时,会先扫描栈顶的活动,若栈顶的活动已经是该活动,则会直接使用栈顶活动,而不创建新的活动实例。

3.singleTask
在启动活动时会扫描全栈活动,若栈中存在该活动,则直接使用该活动,并且栈中处于该活动之上的活动全部出栈。(请注意区别于singleTop的区别)

4.singleInstance

在已有栈的情况下,单独创建一个栈存放该活动。可通过getTaskId()来判断当前活动具体处于哪个栈中。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值