我知道可以使用Bundle
在活动之间传递数据,以及在屏幕轮换等配置更改的情况下保存和恢复数据。
我还读到SharedPreferences
是存储持久数据的首选方式,而不是Bundle
。
为什么会出现这种情况?为了使Bundle
能够处理配置更改,即使在活动被销毁之后也必须保持不变。那么Bundle
的生命周期到底是什么?是否存在通过垃圾收集任意消除的某一点,或者只要您不手动选择清除它,Bundle
的数据是否会持续存在?
答案 0 :(得分:2)
SharedPreferences用于简单的持久性设置存储。与浏览器上的主页一样,每次用户打开应用程序时都应该可以使用该主页。这些只是关键:用于保存简单事物的价值对。
Bundle是一种将数据存储到另一个Context(另一个Activity,Service等)或者在onSaveInstanceState和onRestoreInstance状态下保存和恢复自己当前状态的方法。该数据 NOT 持久性并在应用程序使用时使用。
答案 1 :(得分:1)
Bundle
会在活动存在时持续,也就是说尚未完成。
一个有趣的事实是,当进程死亡发生并且Android大屠杀您的应用程序并重新创建Application类(调用onCreate()
)时,将重建Activity堆栈,并且活动将从saveInstanceState
捆绑包中重新初始化。
如果我记得该位置正确,SharedPreferences
会将您提供的数据存储在data/<applicationname>/preferences
文件夹中的XML文件中。