android系统的activity的onPause()和onStop()会在什么时候调用?以及一些问题
devguide上写的是onPause在切换到另一个程序的时候调用,onStop在程序完全不可见(可能被完全遮挡)的时候调用。而在lifecircle中onStop在on...
dev guide上写的是onPause在切换到另一个程序的时候调用,onStop在程序完全不可见(可能被完全遮挡)的时候调用。而在lifecircle中onStop在onPause的外层,且执行onPause之后程序就可能被系统kill。
那么我的问题来了,为什么google的官方便签示例程序使用了onPause保存编辑中的便签,使用配套的onResume来重新从数据库中读入便签?
我的理解的话这些不是应该放到onStop和onRestart中做么?而且为什么要在onResume的时候重新从数据库中读入?可能在onPause到onResume之间我这个便签程序专用的数据表发生变化么?
PS:我说的示例程序是notepad toturials的exercise 3,如果想详细看的话可以看这个 展开
那么我的问题来了,为什么google的官方便签示例程序使用了onPause保存编辑中的便签,使用配套的onResume来重新从数据库中读入便签?
我的理解的话这些不是应该放到onStop和onRestart中做么?而且为什么要在onResume的时候重新从数据库中读入?可能在onPause到onResume之间我这个便签程序专用的数据表发生变化么?
PS:我说的示例程序是notepad toturials的exercise 3,如果想详细看的话可以看这个 展开
2个回答
展开全部
第一问:其实那些操作可以放在你所说的方法里面,你自己试验,是没问题的。
第二问:onResume和onPause方法是调用比较频繁的,在这两个方法里面一般做很小耗时的操作,以增强用户体验。现在你保存的那种状态,手机cpu执行的时间可以基本忽略,因此放在该方法里也无可厚非。另外:onPause,onStop,onDestory三个方法被标注为YES,由于onPause方法是Activity创建后最有可能保证执行的方法,因此,当系统遇到紧急情况需要恢复内存,那么onStop,onDestory可能不被执行,因此你应当在onPause里保存一些至关重要的状态属性,当然你应当有选择性的做一些操作,不能太耗时,如果太耗时,那么其他的activity将不能被创建直到该activity的onPause方法执行完毕并返回。
第三问:onSaveInstanceState()方法是有个Bundle参数的,就是说这个方法保存的数据是由系统管理的,当你该activity被杀死,重新访问的时候该Bundle参数会被传入onCreate()方法的Bundle。而
在onPause里面保存的数据是可能保存到硬盘去的。
第三点本人没测过,纯属个人理解。
第二问:onResume和onPause方法是调用比较频繁的,在这两个方法里面一般做很小耗时的操作,以增强用户体验。现在你保存的那种状态,手机cpu执行的时间可以基本忽略,因此放在该方法里也无可厚非。另外:onPause,onStop,onDestory三个方法被标注为YES,由于onPause方法是Activity创建后最有可能保证执行的方法,因此,当系统遇到紧急情况需要恢复内存,那么onStop,onDestory可能不被执行,因此你应当在onPause里保存一些至关重要的状态属性,当然你应当有选择性的做一些操作,不能太耗时,如果太耗时,那么其他的activity将不能被创建直到该activity的onPause方法执行完毕并返回。
第三问:onSaveInstanceState()方法是有个Bundle参数的,就是说这个方法保存的数据是由系统管理的,当你该activity被杀死,重新访问的时候该Bundle参数会被传入onCreate()方法的Bundle。而
在onPause里面保存的数据是可能保存到硬盘去的。
第三点本人没测过,纯属个人理解。
展开全部
很简单 我怎么解释 估计也很难让你明白
你可以自己做个activity 然后重写 它的8个生命周期方法 每个方法都输出一句话
做一个activity跳转 然后自己去测试那个界面跳转 根据输出 你就知道android的生命周期了。
或者 直接去Google android生命周期
推荐前者 印象深刻
你可以自己做个activity 然后重写 它的8个生命周期方法 每个方法都输出一句话
做一个activity跳转 然后自己去测试那个界面跳转 根据输出 你就知道android的生命周期了。
或者 直接去Google android生命周期
推荐前者 印象深刻
更多追问追答
追问
那我想再问一下,这个程序同时在onSaveInstanceState和onPause中调用了一个saveNotes()函数,那么同时在这两个函数中调用有意义么?是不是会导致重复多存了一次浪费时间?因为onSaveInstanceState文档中写着并不保证会被调用,而只有在onPause调用之后android程序才是killable,那我只要在onPause里面存就好了?为什么要在onSaveInstanceState中再存一次?(我想google的示例是不会有错的,有什么特殊意义?)
追答
太专业了 哈哈 我解答不了···
我android也是做一些界面之类的项目
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |