这是本系列的第一篇文章,介绍了在Android应用程序中保存数据和应用程序状态的各种方法。 Android SDK中有许多机制可用于保存数据,并且难以决定要使用哪种机制以及何时应触发操作。 构建应用程序时,您要做的第一件事也是最简单的事情之一就是保留用户输入并明确保存的数据。 以下是最常用的持久存储模式:
- 保存数据的最基本方法是将其保存到设备外部存储中的文件中。 所有其他应用程序和用户均可访问此类型的存储。 将设备安装为外部存储器时也可以看到。 即使您卸载了应用程序,这些文件也将保留,除非您使用GetExternalFileDir ()方法获取要保存文件的文件夹。 这是最适合用户编辑的文件,即使删除了您的应用程序也应保留这些文件,例如图片和文档。
- 您还可以将文件保存到应用程序专用的内部存储中。 在这种情况下,用户或其他应用程序将无法访问这些文件,并且在卸载应用程序时,这些文件将被删除。 如果要将简单的数据保存到文件中,同时又避免了管理数据库的开销,这是最好的选择。
- 另外,您可以使用Preference API将用户首选项保存为键/值对,以创建SharedPreferences文件。 您可以使用PreferenceActivity创建一个活动来保存首选项,也可以创建一个承载PreferenceFragment的活动,这两个活动在其布局中均包含Preferences对象而不是视图对象。
- 最后,如果要保存的数据具有复杂的结构,则每个应用程序都有其自己的私有SQLLite数据库来保存数据。 如果卸载该应用程序,此数据将被销毁。
另外,在许多情况下,由于触发了事件,因此需要保存应用程序的当前状态。 例如 :
- 旋转设备时,将重新创建当前活动,因此可以调整布局。
- 当用户或另一个应用程序将您的应用程序发送到后台时,例如是否接到电话。 同样,如果用户在应用程序中进行了另一项活动,则当前活动也将发送到后台。 如果设备需要更多内存,则可以回收发送到后台的活动,并在需要时重新创建。
- 当用户明确关闭应用程序时。
在这种情况下,您可能需要将用户输入的数据保存在永久数据存储中。 当活动发送到后台或以销毁方式发送时,总是引发onPause事件,如果IU被完全隐藏,则紧接着引发onStop事件,因此最好在onPause事件期间保存持久数据。 稍后,当用户再次访问该活动时,如果该活动仍在内存中并恢复,则将引发onRestart , onStart和onResume事件;如果该活动被回收并需要,则将引发onCreate , onStart和onResume事件。重新创建。 因此,如果在所有情况下都需要再次显示数据,则应在onResume期间还原UI。
如果不需要永久保存数据,而您只想保存UI的状态,则可以使用onSaveInstanceState事件将状态存储在Bundle中 。 不应依赖于此来保存数据,因为该事件不是活动生命周期的一部分,并且仅在需要重新创建活动或将其发送到后台时才由UI触发,而当事件被永久销毁时才触发:用于存储瞬态视图状态。 某些数据已经由Android SDK保存,但是您可能需要保存其他信息,例如,如果您具有自定义控件。 当用户导航回活动并且需要还原UI的状态时,如果活动仍在内存中,则可以通过引发的onRestoreInstanceState事件访问包含状态信息的捆绑包;如果活动是,则可以通过引发的onCreate事件访问该状态信息包回收,需要重新创建。
翻译自: https://www.javacodegeeks.com/2014/06/introduction-how-to-save-data-in-your-android-application.html