为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

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

查看完整回答
反对 回复 2022-06-14
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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

查看完整回答
反对 回复 2022-06-14
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信