关于Activity生命周期的一些总结

Activity的三种状态以及对应的方法

  • 显示状态
    • onCreate
    • onStart 活动由不可见->可见
    • onResume 活动准备好与用户交互时候
  • 不可见状态
    • onPause 启动或者恢复另一个活动时候调用,通常在该方法释放和保存一些数据。但这个方法的执行速度要快,否则影响到新的栈顶活动的使用
    • onStop 活动【完全】不可见时候调用,比如调用对话框这个方法不会执行
  • 销毁状态
    • onDestroy

活动A启动一个新的活动B所执行的生命周期方法流程

  • A:onPause->B:onCreate->B:onStart->B:onResume->A:onStop
  • 为什么先执行onPause方法?
    • 比如A活动正在播放音频,突然有电话接入,要立刻启动电话接入活动,所以要先把A活动的音频暂停(onPause),才能启动新的活动。
    • 所以一般在onPause方法中可以将音频,视频暂停
  • 为什么执行完B的3个方法再执行A的onStop方法?
    • 因为执行A的onStop方法说明A活动已经不可见了,假如先执行A的onStop方法再创建B活动,万一活动B出现闪退现象,则会出现黑屏现象,用户体验不好。
    • 所以这是因为防止新的活动会出现闪退现象而造成黑屏的现象方法。

Activity横竖屏切换问题

  • 横竖屏切换的生命周期为:onPause->onStop->onDestroy->onCreate->onStart->onResume
  • 为了保持当前Activity的状态,可以调用onSaveInstanceState方法,在该方法中保存一些状态信息,然后调用onCreate方法时候可以将保存的数据读取出来。生命周期为:
    • onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onResume

启动Activity的方式

  • 显式启动
    • 当Activity的类名已知,可以通过显式启动
  • 匿名启动
    • 调用系统的Activity,比如浏览器,短信等等
    • 比如调用其他的Activity,无法知道类名情况
      • 通过Manifest文件,设置activity标签里面中的action和category属性,如下图,其中“xxx”自己设定
      • 这里写图片描述
      • 然后在调用的Activity代码中,写入以下代码即可,xxxx要与上图的xxxx相同:
        这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值