android onresume 焦点,Android-保你能记住的生命周期教程

先看一下官方给出的图:

39b40afe7fd9

总结一下上图

主要的回调方法包括:

onCreate 、onStart 、onResume 、onPause 、onStop 、onDestroy 、onRestart

给出一张方便记忆的图:

39b40afe7fd9

这些方法都是两两对应的:

1.onCreate创建与onDestroy销毁;

2.onStart可见与onStop不可见;

3.onResume可编辑(即焦点)与onPause;

4.onRestart:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果被onDestroy了,则是调用onCreate方法。

保存数据必须在onPause方法中进行

通过滑动卡片删除应用杀死进程的时候,或者通过应用管理杀死进程的时候,只有栈里面的第一个没有销毁的activity执行ondestroy方法,一般都是mainActivity,其它activity均不执行ondestroy。

Android什么时候只会调用onPause()而不会调用onStop()?

onPause是失去焦点,onStop是不可见时调用,只要Activity失去了焦点还可见就会只调用onPause不调用onStop,常见是translucent(半透明) activity挡住当前Activity。

网上很多人说弹出Dialog时只会调用onPause()而不会调用onStop(),其实是错误的说法,原因是必须使Activity离开前台才会调用onPause,也即是退出栈顶。但是Dialog并不会使Activity离开栈顶。所以答案应该是此时既不会调用onPause()也不会调用onStop()。

onStop不调用的场景

我们知道,Activity A打开B,流程是这样的:

onCreateA - onStartA - onResumeA - onPauseA - onCreateB - onStartB - onResumeB - onStopA

然后按返回到A的流程是这样的:

onPauseB - onStartA - onResumeA - onStopB - onDestoryB

但是如果在B打开的生命周期方法onResume中直接finish当前的B,那么此时返回到A的流程就会缺少onStartA。原因是因为此时对于系统来说A一直是可见的。

onPauseB - onResumeA - onStopB - onDestoryB

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值