Bundle 的有效期是多久?

How long does a Bundle last?

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

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

为什么会这样?为了让 Bundle 处理配置更改,即使在 activity 被销毁后它也必须持续存在。那么 Bundle 的寿命究竟是多少?是否存在某个点,它会被垃圾收集任意消除,或者只要您不手动选择清除它,Bundle 的数据是否会持续存在?

SharedPreferences 用于简单的持久设置存储。就像浏览器上的主页一样,每次用户打开应用程序时都应该可用。这些只是 key:value 对,旨在容纳简单的东西。

Bundle 是一种存储数据的方式,可以传递给另一个上下文(另一个 Activity、服务等)或在 onSaveInstanceState 和 onRestoreInstance 状态中保存和恢复您自己的当前状态。此数据不会 持久化并在应用程序使用时使用。

Bundle 在 Activity 存在时持续,也就是说它还没有完成。

一个有趣的事实是,当 进程死亡 发生并且 Android 屠杀您的应用程序并重新创建应用程序 class (onCreate() 被调用),然后重建 Activity 堆栈,并从 saveInstanceState 包重新初始化 activity。

如果我没记错的话,SharedPreferences 将您提供的数据存储在 data/<applicationname>/preferences 文件夹中的 XML 文件中。