BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #17939同步于 2014/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

Android 中的Activity 保存数据为持久化在何时保存最为妥当?

studychina
2014/11/24镜像同步19 回复
Android 中的Activity 保存数据为持久化在哪里保存最为妥当? 在网上搜索和官网都建议保存在onPause。可是原因是为什么呢,为什么不保存在onstop()或是onDestroy()呢;此外,如果写入数据库,也是在onPause吗?持久化包括sharepreference和数据库吗?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
dss886机器人#1 · 2014/11/24
因为onPause()是一个Acitivity销毁前必然调用的方法 onStop()和onDestroy()在系统内存不足的时候都有可能不调用 仔细看看Activity的生命周期 【 在 studychina (Michael) 的大作中提到: 】 : Android 中的Activity 保存数据为持久化在哪里保存最为妥当? 在网上搜索和官网都建议保存在onPause。可是原因是为什么呢,为什么不保存在onstop()或是onDestroy()呢;此外,如果写入数据库,也是在onPause吗?持久化包括sharepreference和数据库吗?
ccyingzi2009机器人#2 · 2014/11/24
onpause 必然调用, 比如谈了一个弹窗,来个个电话。 这时候只走到onpause。
studychina机器人#3 · 2014/11/25
对,有些手机来电话的时候,当前Activity有时候调用onPause()和onStop();有时候是仅仅调用onPause() 项目中已经出现过。谢谢回答~! 【 在 ccyingzi2009 的大作中提到: 】 : onpause 必然调用, 比如谈了一个弹窗,来个个电话。 这时候只走到onpause。
studychina机器人#4 · 2014/11/25
恩 好的。不过看官网的好像没提到这么详细的。你说得有道理,谢谢你的回答。 【 在 dss886 的大作中提到: 】 : 因为onPause()是一个Acitivity销毁前必然调用的方法 : onStop()和onDestroy()在系统内存不足的时候都有可能不调用 : 仔细看看Activity的生命周期 : ...................
ccyingzi2009机器人#5 · 2014/11/25
额。 【 在 studychina 的大作中提到: 】 : 对,有些手机来电话的时候,当前Activity有时候调用onPause()和onStop();有时候是仅仅调用onPause() 项目中已经出现过。谢谢回答~!
cowfighting机器人#6 · 2014/11/25
嗯~
zishi机器人#7 · 2014/11/25
onPause以后,系统就能销毁activity了~后面的可能不会调用,沙发正解~
ocean2706机器人#8 · 2014/11/25
写入数据库什么时候都可以,只要你觉得数据ok,应该保存了就可以写,当然前提是写的地方会被调用。持久化应该还包括文件,ContentProvider一般是应用间共享数据的,不确定算不算。(1)文件读写最慢,但写到sd卡上,用户不手动删即使卸载也能保存,其它一旦清除应用数据或者卸载就没有数据了(2)数据库比较快,且相对安全一点,拥有相对完整的一套数据库操作,很好用;(3)sharedpreference最快最简单,数据简单时,如应用设置等情况推荐,但是数据复杂的话比较推荐数据库。因为sp是xml存储,偶尔会出现漏存、或者读取异常,不过一般不影响;语法较为简单,可存储类型不够丰富,所以复杂数据很难管理;并且需要通过context获取实例,所以activity之外必须传入context。大概这么多,看着用吧,虽然说的不一定准确
studychina机器人#9 · 2014/11/25
回答得挺得体和详细啊,谢谢~ 【 在 ocean2706 的大作中提到: 】 : 写入数据库什么时候都可以,只要你觉得数据ok,应该保存了就可以写,当然前提是写的地方会被调用。持久化应该还包括文件,ContentProvider一般是应用间共享数据的,不确定算不算。(1)文件读写最慢,但写到sd卡上,用户不手动删即使卸载也能保存,其它一旦清除应用数据或者卸载就没有数据了(2)数据库比较快,且相对安全一点,拥有相对完整的一套数据库操作,很好用;(3)sharedpreference最快最简单,数据简单时,如应用设置等情况推荐,但是数据复杂的话比较推荐数据库。因为sp是xml存储,偶尔会出现漏存、或者读取异常,不过一般不影响;语法较为简单,可存储类型不够丰富,所以复杂数据很难管理;并且需要通过context获取实例,所以activity之外必须传入context。大概这么多,看着用吧,虽然说的不一定准确