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 文件中。
我知道 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 文件中。