Activity原理

找了好多书,看了好多的播客,并没有找到一个很系统讲Activity原理的。虽然哦我也吸收了很多关于Activity的知识。但没有一个知识的构架,还是很虚


在这里,只好自己再总结一次:


我觉得Activity的生命周期:onCreate(Bundle onSavedInstanceState)——>onStart()——>onResume()——>onPause()——.>onStop()——>onDestory()

这六个生命周期,其实两两对应。其实很多时候,我们疑惑的是,在正常开发中,什么时候调用以上六大生命阶段的哪个阶段。

我总结了下:按配对来说,

create和destroy这一对,是不可视化、不可交互的。所以,很多不重复使用的资源,都在destroy进行销毁,当然,我们很多时候把基本的UI初始化都放在了create中。对于这个不重复使用的资源的理解是,如果这个资源不大,在页面的焦点失去后,或者被挡住后,不需要释放以腾出更多的资源去满足其他Activity,就可以放在create中初始化,在destroy中销毁

start和stop这一对,是可视化、不可交互的。但start这个过程是瞬间的,当然,上面的一对阶段,也是瞬间的,毕竟初始化和销毁并不要多少时间。但是,start阶段是可视化的开始,stop是可视化的结束。每次对应Activity的现场恢复都是冲start开始。所以,对于start,要初始化那些在屏幕被完全替换掉了的时候需要释放的资源和操作,可能你在看视频,电话来了,这时候,我们的网络连接资源,还有语音资源,都要让给电话系统了;并且整个屏幕是被切换掉了,所以最后一个步骤必然是stop。


resume和pause这一对,是可视化、可交互的,当然可交互是指resume,所以Activity的生命中,resume是最长的——所有用户的交互,都可以在这个阶段被接收的。所以这个阶段,应该初始化的是那些在失去焦点后,虽然屏幕并没有被切换掉的,但是却很影响性能的资源和操作。百度地图在加载坐标和位置信息的过程中,如果你点击一个AlertDialog,这时地图的焦点失去了,所以,它停止加载,当它重新获取焦点的时候,就继续获取。也就是在resume中初始化上述情况的资源,在pause中,暂停这是资源的提供


总结中.......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值