如何在应用程序关闭之前调用方法?

How to call a method just before an app is closed?

我有一个变量,其中包含可以在用户使用应用程序时更改的数据。 我的目标是在用户关闭应用程序之前将这些数据存储在 SharedPrefs 中, 我在想

OnStop()  {
Preferences.edit()... }

但我不知道正确的语法... 提前谢谢大家

Activity.onStop() 在应用程序完全关闭之前被调用(从最近的应用程序中踢出) 您可能应该使用 Activity.onPause() 来保存您的首选项,因为当用户切换到另一个应用程序时也会调用它。

更多信息: https://developer.android.com/guide/components/activities/activity-lifecycle

您应该将持久数据保存在 onPause() 而不是 onStop()

然后您可以在 onResume() 中检索您的数据。

为了保存数据你可以看看这个例子

  SharedPreferences.Editor editor = getSharedPreferences("myPrefs", MODE_PRIVATE).edit();
  editor.putString("username", "My name");
  editor.apply();

然后像这样重新检索你的数据

  SharedPreferences prefs = getSharedPreferences("myPrefs", MODE_PRIVATE); 
  String username = prefs.getString("username", "No username"); //No username is the default value

将您的数据保存在 onStop 方法的 SavedPrefs 中。

Syntex 会像

在 onStop 方法中

@Override
protected void onStop() {
    super.onStop();
    SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = saved_values.edit();
    edit.putString("key", "stringToBeSaved")

    editor.commit();
}

然后在 onCreate 方法中检索您的数据

@Override
protected void onCreate(Bundle savedInstanceState) {
    SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String foo = saved_values.getString("key", "default_string");
}

记住密钥应该相同。

有关详细信息,请查看 Android 上的文档
共享首选项:Save key-value data
Android 生命周期:Understand the Activity Lifecycle