Activity 生命周期与启动模式

本文详细介绍了Android中Activity的各种生命周期方法,包括onCreate(), onStart(), onResume()等,并解释了它们的调用时机及注意事项。还讨论了Activity的不同启动模式及其标志,如standard、singleTop、singleTask和singleInstance模式。


新Activity如果采用了透明的主题,当前Activity不会回调onStop()方法

onCreate() 和 onDestory()配对使用,只可能 调用一次
onStart() 和onStop() 配对使用,多次调用
onResume()和onPause()配对使用,多次调用

onPause()和onStop()不用执行耗时操作,否则影响其它Activity的显示

Activity异常生命周期
执行 onSaveInstanceState() 和onRestoreInstanceState()
onSaveInstanceState()在onStop()调用之前,可能 在 onPause()之前调用,也可能 在onPause()之后调用
onRestoreInstanceState() 在onStart()之后调用

内存不中可能 导致低优先级的Activity被杀死
1. 前台Activity  正在与用户交互的,
2.可见但非前台Activity (例如Activity上弹出Dialog),不能与用户进行交互
3.后台Activity--已经被暂停的Activity

在旋转屏幕时,不想重新创建Activity 
android:configChanges = "orientation | keyboardHidden"

Activity 启动模式
1. standard  标准模式,默认模式
多实例的实现
任务栈是“后进先出”的模式
谁启动了这个Activity,它就在启动它的Activity的栈里
getApplicatioinContext().startActivity() 会报错 , 因为 非Activity 的Context 没有在任何一个Task 里
解决办法:  intent.sefFlag(Intent.FLAG_ACTIVITY_NEW_TASK)

2. singleTop  栈顶复用模式
如果新Activity位于栈顶,则不用被重新创建,调用onNewIntent(),onCreate()和onStart()不会被调用
如果存在但非栈顶,会重新创建 

3.singleTask 栈内复用模式   单实例模式
只要Activity在一个栈中存在,多次启动都不会创建新的实例,调用onNewIntent(),具有clearTop()效果

4. singleInstance 单实例模式
Activity只能单独存在于一个栈中

所有Activity所需的任务栈的名字为应用的包名  

Activity   的Flags
FLAG_ACTIVITY_NEW_TASK   等同  singleTask

FLAG_ACTIVITY_SINGLE_TOP 等同  singleTop

FLAG_ACTIVITY_CLEAR_TOP + FLAG_ACTIVITY_NEW_TASK   等同  singleTask

Intent 的匹配规则
action的匹配
Intent中的action 存在且必须 和过滤规则中的其中一个action相同
category 的匹配
Intent中的category  存在且必须 和过滤规则中的其中一个action相同;可以默认没有,系统默认会加一个 android.intent.category.DEFAULT
data 的匹配规则
必须有data,且完全匹配
调用setDataAndType() ,不能先调用setData() ,再调用setType() ,两者会互相清除数据


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值