Activity原理

来源:互联网 发布:淘宝助理教程 编辑:程序博客网 时间:2024/06/17 02:30

找了好多书,看了好多的播客,并没有找到一个很系统讲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 0
原创粉丝点击