六、Activity生命周期与启动模式


关于activity的主要就是生命周期和启动模式,这两个贯穿你开发的整个周期

关键词联想:两两对应,普通,栈顶内独

1、生命周期

先看图,以前开发一直百度找这张图
mark

1.1 、正常使用的周期方法

  • onCreate 在Activity第一次被创建时调用onCreate方法。我们通常在onCreate方法中加载布局,初始化控件。
  • onStart 在Activity变为可视的时候,调用onStart方法。
  • onResume 当Activity处于栈顶,并处于正在运行状态,可以与用户进行交互的时候,调用onResume方法。
  • onPause 当Activity已经失去焦点,且依旧是可视状态时调用onPause方法,此时Activity无法与用户进行交互。
  • onStop 当Activity从可视变为不可视的时候,调用onStop方法。
  • onDestory onDestory方法在Activity被销毁前调用。
  • onRestart onRestart方法在Activity被重新启动时调用,在Activity第一次被创建的时候不会调用。

其实吧 生命周期有个简单的记忆方法,他们都是两两对应的

  • onCreate -onDestory 创建销毁
  • onStart -onStop 可视or不可视
  • onResume - onPause 可交互or不可交互

剩下一个只有在activity重新启动才会调用的 onRestart

1.1 、非正常周期方法 onSaveInstanceState() 与 onRestoreInstanceState()

这两货一般你用不到,用到的时候就是测试给你提bug的时候,怎么突然界面奔溃了,因为当用户重新打开页面时
内存数据已经被干掉了

  • onSaveInstanceState:用于保存Activity状态信息
  • onRestoreInstanceState方法在Activity被系统销毁之后恢复Activity时被调用,用于恢复Activity状态信息

onSaveInstanceState被调用:

  1. 当用户按下HOME键时。
  2. 切换到其他进程时。
  3. 锁屏时。
  4. 启动新的Activity时。
  5. 屏幕方向切换时

onRestoreInstanceState被调用:在Activity被系统销毁,又回到该Activity的时候

1.3、来个例子实战下

  1. 启动Activity并点击回退键退出Activity:
    onCreate() -> onStart() -> onResume() ->onPause() -> onStop() -> onDestory()
  2. 按下HOME键并再次点击应用
    onPause() -> onSaveInstanceState() -> onStop()->onRestart() -> onStart() -> onResume()
  3. 切换到其他应用并切回来
    onPause() -> onSaveInstanceState() -> onStop()->onRestart() -> onStart() -> onResume()
  4. 锁屏并解锁
    onPause() -> onSaveInstanceState() -> onStop()->onRestart() -> onStart() -> onResume()
  5. 跳转到另一个透明Activity并点击回退键返回
    这里有点个因为是透明的所以,onStop,onStart并不会回调
  6. 由竖屏转为横屏
    onPause() -> onSaveInstanceState() -> onStop()->ondestory->onCreate -> onStart() ->onRestoreInstanceState->onResume

2、启动模式

  1. 标准模式 standard:每次启动的时候都会在Activity栈顶创建一个实例
  2. 栈顶复用模式 singleTop: 只有当该Activity存在于栈顶的时候才不会新建,如果不在栈顶,Android同样会重新创建该Activity实例
  3. 栈内复用模式 singleTask:只要栈内有就会复用
  4. 单实例模式 singleInstance 一个栈就他,无论你从哪个栈过来,只要创建了就会复用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值