当我想保存 Activity 的一些状态行为时,文档说我们应该实现 OnSaveInstanceState 和 OnReceiveInstanceState。
他们说即使在销毁或重新启动后,这也会保存 Activity 状态。我更关心销毁( Activity 完全消失),这是否意味着 bundle 被认为是持久的?
当我打开一个 pdf 阅读器时,关闭它并再次打开它,我看到它在我所在的同一页面中打开。这是使用 Bundles 还是其他实现的
最佳答案
要存储持久应用程序数据,请使用共享首选项。 Shared Preferences 只是一组持久存储的数据值。通过持久性,我们谈论的是在应用程序生命周期 事件中持续存在的数据。换句话说,应用程序(或设备,就此而言)可以在不丢失数据的情况下启动和停止。下次用户启动应用程序时,该数据仍然可用。 一些游戏使用共享偏好来存储游戏达到的级别,玩家的名字...... 看这个link学习如何使用 Android Preference API
偏好与 bundle 相似,但是它们是持久的,而 bundle 不是!! 请记住,如果您需要存储持久数据,您有 4 个选择:
- 使用共享首选项
- 使用 SQLite 数据库
- 使用内部存储
- 使用外部存储
Bundles 不是持久化的,文档说不要指望它,onSaveInstanceState() 在 activity 即将被系统杀死时调用,但对于已知的重启(对于 屏幕旋转上的实例。)如果您的 Activity 因为系统需要更多资源而被终止(而 Activity 在后台),不会调用 onSaveInstanceState(),但会调用 onPause()。 onSaveInstanceState() 正如文档所述,实际上并不意味着保存持久数据。
关于android - android 中的包是否永久保存 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165772/