请问为什么要在onResume的时候重新从数据库中读入?

dev guide上写的是onPause在切换到另一个程序的时候调用,onStop在程序完全不可见(可能被完全遮挡)的时候调用。而在lifecircle中onStop在onPause的外层,且执行onPause之后程序就可能被系统kill。
那么我的问题来了,为什么google的官方便签示例程序使用了onPause保存编辑中的便签,使用配套的onResume来重新从数据库中读入便签?
我的理解的话这些不是应该放到onStop和onRestart中做么?而且为什么要在onResume的时候重新从数据库中读入?可能在onPause到onResume之间我这个便签程序专用的数据表发生变化么?

芜湖不芜
浏览 138回答 2
2回答

繁星点点滴滴

很简单 我怎么解释 估计也很难让你明白你可以自己做个activity 然后重写 它的8个生命周期方法 每个方法都输出一句话做一个activity跳转 然后自己去测试那个界面跳转 根据输出 你就知道android的生命周期了。

12345678_0001

第一问:其实那些操作可以放在你所说的方法里面,你自己试验,是没问题的。第二问:onResume和onPause方法是调用比较频繁的,在这两个方法里面一般做很小耗时的操作,以增强用户体验。现在你保存的那种状态,手机cpu执行的时间可以基本忽略,因此放在该方法里也无可厚非。另外:onPause,onStop,onDestory三个方法被标注为YES,由于onPause方法是Activity创建后最有可能保证执行的方法,因此,当系统遇到紧急情况需要恢复内存,那么onStop,onDestory可能不被执行,因此你应当在onPause里保存一些至关重要的状态属性,当然你应当有选择性的做一些操作,不能太耗时,如果太耗时,那么其他的activity将不能被创建直到该activity的onPause方法执行完毕并返回。第三问:onSaveInstanceState()方法是有个Bundle参数的,就是说这个方法保存的数据是由系统管理的,当你该activity被杀死,重新访问的时候该Bundle参数会被传入onCreate()方法的Bundle。而在onPause里面保存的数据是可能保存到硬盘去的。第三点本人没测过,纯属个人理解。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android