android学习——activity生命周期和切换逻辑

首先看一下Android api中所提供的Activity生命周期图:



只看图片并不会清楚它的运行机制,有了下面的解释就会豁然开朗了。

先看一下谷歌的API解释:

方法

描述

是否可以终止

下一个方法

onCreate()

Activity程序启动之后会首先调用此方法。在这个方法体里,你需要完成所有的基础配置——创建视图,连接数据库并将数据绑定到list列表中,等等。这个方法会传递一个保存了此Activity上一状态信息的Bundle对象。紧随其后的方法总是onStart().

不可以

onStart()


onRestart()

处于停止态的Activity调用此方法,可以让此Activity重新显示在前台。

紧随其后的方法总是onStart()

不可以

onStart()

onStart()

在此Activity可见(显示在前台)之前调用。

如果接着是显示在前台,紧随其后的方法是onResume()如果接下来此Activity被隐藏了,则紧随其后的方法是onStop()

不可以

onResume()

onStop()


onResume()

在与用户进行交互之前调用此方法,这一时刻Activity位于activity栈的栈顶,在等待用户的操作(输入数据或点击按钮等)。紧随其后的方法是onPause().

不可以

onPause()

onPause()

当启动其他activity时调用此方法。在这个方法体里,通常用于提交未保存的数据、停止动画/视频和处理其他占用CPU资源的程序,等等。同时在这个方法体里处理的都是一些迅速快捷的操作,因为下一个activity会在onPause()方法执行完之后才可以在前台显示

如果此Activity重新回到前台显示,则紧随其后的方法是onResume();如果此Activity变得不可见了,则紧随其后的方法是onStop()

可以

onResume()

onStop()

onStop()

Activity不可见时调用此方法。这个方法的调用时刻是在Activity需要销毁或者被其他otherActivity取代且覆盖此Activity在前台显示时调用。

如果此Activity重新显示在前台,紧随其后的方法是onRestart();如果此Activity需要被销毁,紧随其后的方法是onDestroy()

可以

onRestart()

onDestroy()

onDestroy()

Activity被销毁时调用此方法。这是Activity生命周期里最后调用的一个方法。这个方法的调用可以发生在activity调用了finish()方法之后,或者是系统为了节省空间而销毁了此Activity的实例。你可以使用isFinishing()方法来区分这两种情况。

可以

——


在实际应用场景中,假设A Activity位于栈顶,此时用户操作,从A Activity跳转到B Activity。那么对AB来说,具体会回调哪些生命周期中的方法呢?回调方法的具体回调顺序又是怎么样的呢?

开始时,A被实例化,执行的回调有A:onCreate -> A:onStart -> A:onResume。

当用户点击A中按钮来到B时,假设B全部遮挡住了A,将依次执行A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop。

此时如果点击Back键,将依次执行B:onPause -> A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy。

至此,Activity栈中只有A。在Android中,有两个按键在影响Activity生命周期这块需要格外区分下,即Back键和Home键。我们先直接看下实验结果:

此时如果按下Back键,系统返回到桌面,并依次执行A:onPause -> A:onStop -> A:onDestroy。

此时如果按下Home键(非长按),系统返回到桌面,并依次执行A:onPause -> A:onStop。由此可见,Back键和Home键主要区别在于是否会执行onDestroy。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值