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,如果想详细看的话可以看这个
展开
 我来答
loweryou
2012-03-27 · TA获得超过288个赞
知道小有建树答主
回答量:195
采纳率:75%
帮助的人:135万
展开全部
第一问:其实那些操作可以放在你所说的方法里面,你自己试验,是没问题的。
第二问:onResume和onPause方法是调用比较频繁的,在这两个方法里面一般做很小耗时的操作,以增强用户体验。现在你保存的那种状态,手机cpu执行的时间可以基本忽略,因此放在该方法里也无可厚非。另外:onPause,onStop,onDestory三个方法被标注为YES,由于onPause方法是Activity创建后最有可能保证执行的方法,因此,当系统遇到紧急情况需要恢复内存,那么onStop,onDestory可能不被执行,因此你应当在onPause里保存一些至关重要的状态属性,当然你应当有选择性的做一些操作,不能太耗时,如果太耗时,那么其他的activity将不能被创建直到该activity的onPause方法执行完毕并返回。
第三问:onSaveInstanceState()方法是有个Bundle参数的,就是说这个方法保存的数据是由系统管理的,当你该activity被杀死,重新访问的时候该Bundle参数会被传入onCreate()方法的Bundle。而
在onPause里面保存的数据是可能保存到硬盘去的。
第三点本人没测过,纯属个人理解。
miho蓓
2011-07-14 · TA获得超过1089个赞
知道小有建树答主
回答量:984
采纳率:0%
帮助的人:537万
展开全部
很简单 我怎么解释 估计也很难让你明白
你可以自己做个activity 然后重写 它的8个生命周期方法 每个方法都输出一句话
做一个activity跳转 然后自己去测试那个界面跳转 根据输出 你就知道android的生命周期了。
或者 直接去Google android生命周期
推荐前者 印象深刻
更多追问追答
追问
那我想再问一下,这个程序同时在onSaveInstanceState和onPause中调用了一个saveNotes()函数,那么同时在这两个函数中调用有意义么?是不是会导致重复多存了一次浪费时间?因为onSaveInstanceState文档中写着并不保证会被调用,而只有在onPause调用之后android程序才是killable,那我只要在onPause里面存就好了?为什么要在onSaveInstanceState中再存一次?(我想google的示例是不会有错的,有什么特殊意义?)
追答
太专业了  哈哈 我解答不了···
我android也是做一些界面之类的项目
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式