当前位置: 首页 > 科技观察

如何在Android应用程序中保存数据

时间:2023-03-14 22:00:16 科技观察

这是关于在应用程序中保存数据和应用程序状态的系列文章中的第一篇。AndroidSDK中有许多保存数据的机制,在决定使用哪一个以及何时触发操作时常常会让人感到困惑。创建个人应用程序时,您要做的第一件也是最简单的事情就是保存用户输入的一些明确需要保存的数据。以下是一些常用的持久化存储方法:最基本的数据保存方法是保存到外部存储设备上的文件中。此存储可供用户和所有应用程序使用,并且在将设备安装为外部存储时可以看到。即使您的应用程序已卸载,该文件仍将保留,除非您使用GetExternalFileDir方法获取保存文件的文件夹。这最适合用户编辑过的文件,即使卸载应用程序仍然存在,例如图片和文档。您还可以将文件保存为内部存储,这对您的应用程序是私有的。在这种情况下,用户和其他应用程序都会获得这些文件,当您的应用程序卸载时,这些文件将被删除。这最适合保存一些简单的数据,避免与数据库打交道的开销。或者,您可以将用户配置存储为键/值对,并使用PreferenceAPI创建SharedPreferences文件。你可以创建一个PreferenceActivity或一个包含PreferenceFragment的Activity来保存参数配置,它们的布局有Preferences对象而不是View对象。***,如果你要保存的数据结构比较复杂,每个应用程序都有自己私有的SQLLite数据库来保存数据。如果您的应用程序被卸载,这些数据也将被销毁。此外,在某些情况下,由于触发了某个事件,因此有必要保存应用程序的当前状态。例如:当设备旋转时,重新创建当前Activity并调整布局。当你的应用程序被用户或其他应用程序放入后台运行时,例如,手机接到电话。另外,如果用户打开应用的另一个Activity,当前的Activity也会被放到后台。任何在后台运行的Activity都可能在内存不足时被回收,并在需要时重新创建。当用户明确关闭应用程序时。以上几种情况,都需要持久化用户输入的数据。当Activity进入后台或销毁过程中时,总是调用onPause方法,即使UI完全隐藏,也会调用onStop方法。所以***把数据保存在OnPause方法中。随后,当用户再次触摸上一个Activity时,如果它还在内存中,则调用onRestart、onstart、onResume方法,如果已经被回收,需要重启,则调用onCreate、onStart、onResume方法叫。所以如果你想在所有情况下再次显示以前的数据,你应该在onResume方法中恢复UI。如果不需要直接保存数据,只想保存UI的状态,可以在onSaveInstanceState方法中将数据保存在Bundle中。此方法不能用于保存数据,因为它不是Activity生命周期的一部分。只有当Activity需要被重新创建或者放到后台时才由UI事件触发,被***销毁时不会调用该方法。所以它只是用来保存一些临时的View状态。AndroidSDK已经保存了一些数据,但您可能需要保存一些额外的信息。比如你有一些自定义控件,当用户按下返回键返回到Activity时,需要恢复UI的状态。如果Activity还在内存中,可以在onRestoreInstanceState方法中获取保存有状态信息的bundle对象。如果Activity被回收需要重新创建,可以在onCreate方法中获取bundle对象。原文链接:javacodegeeks翻译:Cucumber翻译链接:http://blog.jobbole.com/71882/