android开发-Activity生命周期

1、Activity的活动状态

Running、Pause、Stop、Killed

2、Activity的生命周期

onCreate->OnStart->onResume

onPause->onStop(如果新的Activity设置了透明主题 那么原来的Activity不走onStop 因为他还是可见的)

(onPause少做 因为跳转到其他页面 他是必经之路 也就是先走完onPause 再走下一个页面的OnCreate->onStart->onResume->(old Act)onStop)

onRestart->onStart->onResume 其他的页面 返回来之后的生命周期


3、异常的情况下(比如屏幕发生旋转切换横竖屏幕)杀死了Activity 然后恢复时候的生命周期

这时候会知行onSaveInsanceSate,他发生在onStop之前,但是不保证在onPause之前或者之后,但是只有在异常状态下的时候会知行onSaveInsanceSate

正常结束的生命周期 是不会调用onSaveInsanceSate方法的

onRestoreInstanceState是重建恢复税后调用,从时序上来讲  他发生在onStart之后

每一个View都有onSaveInstanceState和onRestoreInstanceState方法,当Activity异常的时候 会调用Activity的onSaveInstance ,然后委托window去保存数据,然后Window委托顶层的View去保存数据 一般来说这个顶层的view 就是decorView,然后这个view会一一的通知他的子View ----通过调用子view的onSaveInstance

4、Activity的启动模式

standard标准模式

singleTop  栈顶复用 

singleTask 站内复用  如果与其他Activity在同一个栈内 如果栈内有一个singleTask的Activity 比如ABCD(A在栈底部)这时候调用singleTask的B 那么CD将要被清除 因为single有clearTop的功能

singleInstance 单例模式  他自己存在一个栈内 与其他的栈不在一起 如果他会一直存在一个 


当一个应用程序加载一个singleInstance模式的Activity时,如果该Activity没有被实例化,那么就重新创建一个Task,并入栈,如果已经被实例化,那么就调用该Activity的onNewIntent; 
    2、singleInstance的Activity所在的Task不允许存在其他Activity,任何从该Activity加载的其它Actiivty(假设为Activity2)都会被放入其它的Task中,如果存在与Activity2相同affinity的Task,则在该Task内创建Activity2。如果不存在,则重新生成新的Task并入栈。



设置启动模式 可以有两种  一种是在Manifest中设置启动模式,另外一种是中Intent中的Flag设置,这两种方式如果同时设置 那么第二种方式优先级高

两种方式还有一些不同,比如第一种没有clearTop  第二种没法设置singleInstance模式

FLAG_ACTIVITY_NEW_TASK -》standar

FLAG_ACTIVITY_SINGLE_TOP-》singleTop

FLAG_ACTIVITY_CLEAR_TOP  -》配合FLAG_ACTIVITY_NEW_TASK  同一个栈内 位于他上面的所有Activity都会被出栈,如果activity已经存在 那么调用onNewIntent,如果Activity是standard模式 那么连同他都要被出栈 然后创建新的

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

具有这个标识的Activity不会出现在Activity列表中 也可以在Manifest中设置android:excludeFromRecents="true"


5、如果想查看当前设备显示的Activity有哪些

可以使用命令

adb shell dumpsys activity

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值