捆绑多久了?

时间:2015-09-08 09:06:13

标签: android android-activity sharedpreferences bundle android-lifecycle

我知道可以使用Bundle在活动之间传递数据,以及在屏幕轮换等配置更改的情况下保存和恢复数据。

我还读到SharedPreferences是存储持久数据的首选方式,而不是Bundle

为什么会出现这种情况?为了使Bundle能够处理配置更改,即使在活动被销毁之后也必须保持不变。那么Bundle的生命周期到底是什么?是否存在通过垃圾收集任意消除的某一点,或者只要您不手动选择清除它,Bundle的数据是否会持续存在?

2 个答案:

答案 0 :(得分:2)

SharedPreferences用于简单的持久性设置存储。与浏览器上的主页一样,每次用户打开应用程序时都应该可以使用该主页。这些只是关键:用于保存简单事物的价值对。

Bundle是一种将数据存储到另一个Context(另一个Activity,Service等)或者在onSaveInstanceState和onRestoreInstance状态下保存和恢复自己当前状态的方法。该数据 NOT 持久性并在应用程序使用时使用。

答案 1 :(得分:1)

Bundle会在活动存在时持续,也就是说尚未完成。

一个有趣的事实是,当进程死亡发生并且Android大屠杀您的应用程序并重新创建Application类(调用onCreate())时,将重建Activity堆栈,并且活动将从saveInstanceState捆绑包中重新初始化。

如果我记得该位置正确,SharedPreferences会将您提供的数据存储在data/<applicationname>/preferences文件夹中的XML文件中。