关于android:何时将应用程序设置提交到SharedPreferences(onStop或onDestroy)

When to commit application settings to SharedPreferences (onStop or onDestroy)

我想知道,什么时候可以将我们的应用程序设置保存到sharedreferences。我们应该在onStoponDestroy期间这样做吗?我意识到这两种方法都有其优缺点。

站上

如果用户不打算退出应用程序,那么将应用程序设置保存到sharedreferences似乎是多余的。他只需按Home键(在顶部调用)->长按Home键->通过再次选择应用程序重新启动应用程序

销毁

用户可以通过按Home键(调用了OnStop)->长按Home键->在应用程序上向左滑动来终止应用程序。如果用户以这种方式退出应用程序,我会意识到虽然应用程序被终止,但并没有调用onDestroy。因此,不保存应用程序设置。

那么,在onStoponDestroy期间保存应用程序设置更好吗?


最好在进行更改后立即调用commit(),或者在onPause()方法中调用。这可以确保在几乎所有场景中都保存您的更改,除了导致应用程序崩溃的未捕获异常。

另外,您应该注意,无论是onStop()还是onDestroy()都不能保证被调用,特别是在Android内存不足的情况下。然而,几乎总是叫onPause()


我认为Android文档可以很好地解释何时应该从用户那里获取或保存任何数据:

onPause() is where you deal with the user leaving your activity. Most
importantly, any changes made by the user should at this point be
committed (usually to the ContentProvider holding the data).

http://developer.android.com/reference/android/app/activity.html网站