返回信息流在一篇博客中看到一下的话
需要注意的是:onstop()中onSaveInstanceState()方法不保证一定会被调用,所以在这个方法里你只应该保存一些临时变量(如UI的状态),而不要去保存一些需要持久化的数据。相反,你应该在onPaused()方法里保存需要持久化的数据(例如保存到数据库里的数据)。
请问:onPaused()方法系统不会自动调用onSaveInstanceState()吗?为什么onPaused()方法里保存需要持久化的数据呢?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #16511同步于 2014/9/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
Activity中onstop();onPaused()方法的疑问
aName
2014/9/22镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
onPause()是唯一一个保证在进程被杀之前会调用的方法
【 在 aName (昵称) 的大作中提到: 】
: 在一篇博客中看到一下的话
: 需要注意的是:onstop()中onSaveInstanceState()方法不保证一定会被调用,所以在这个方法里你只应该保存一些临时变量(如UI的状态),而不要去保存一些需要持久化的数据。相反,你应该在onPaused()方法里保存需要持久化的数据(例如保存到数据库里的数据)。
: 请问:onPaused()方法系统不会自动调用onSaveInstanceState()吗?为什么onPaused()方法里保存需要持久化的数据呢?
: ...................
那它会自动调用onSaveInstanceState()吗?
【 在 dss886 (打击楼主) 的大作中提到: 】
: onPause()是唯一一个保证在进程被杀之前会调用的方法
通过『我邮2.0』发布
不一定啊,系统销毁Activity的时候才会调用
用户主动的比如按Back键则不会调用
这与onPause()还是onStop()没有关系
简单说就是,如果一个界面放在后台被系统回收了
用户切进去的时候,系统会尝试恢复这个界面,
用到的是onSaveInstanceState()。
如果是用户主动Back的,用户不期望下次进来的界面跟上次一样,
那么就没有调用onSaveInstanceState(),下次肯定是重新加载的。
onSaveInstanceState()只是用来恢复状态的。
如果你有些数据需要保持到数据库,写入文件等(持久化),
就需要写在onPause()里。
【 在 aName (昵称) 的大作中提到: 】
: 那它会自动调用onSaveInstanceState()吗?
: 【 在 dss886 (打击楼主) 的大作中提到: 】
: 通过『我邮2.0』发布
: ...................
你都在啥地方用。。
我咋从来没用过..
【 在 dss886 (打击楼主) 的大作中提到: 】
: 不一定啊,系统销毁Activity的时候才会调用
: 用户主动的比如按Back键则不会调用
: 这与onPause()还是onStop()没有关系
: ...................
【 在 dss886 的大作中提到: 】
: 不一定啊,系统销毁Activity的时候才会调用
: 用户主动的比如按Back键则不会调用
: 这与onPause()还是onStop()没有关系
: ...................
既然onSaveInstanceState()的调用是由系统决定的,那是不是不论onPaused();或onStop()中都应该去存储一些UI的状态呢?毕竟onSaveInstanceState()方法不保证一定会被调用。
onSaveInstanceState不一定会被调用。比如一路back,这个时候邮件草稿应该在onPause里面被保存。另外,注意,那个博客里面的话本身就有问题。
【 在 a206206 的大作中提到: 】
: onSaveInstanceState不一定会被调用。比如一路back,这个时候邮件草稿应该在onPause里面被保存。另外,注意,那个博客里面的话本身就有问题。
他还有一句话是:“ 在暂停状态下的activity,因其activity信息完整保存在内存里且保持与窗口管理器的连接,所以可以直接调用onRestart()方法还原activity。”pause()对应的不应该是onResume()来恢复吗?难道可以直接跳到onRestart()???