Android 返回按钮点击时调用的函数

4
当您在Android上单击“后退”按钮时,调用的函数是什么?我的要求是当应用程序正在运行并且用户单击后退按钮时,应将应用程序的状态存储到数据库中,并且用户应该能够在返回应用程序时看到状态。
通过浏览互联网,我了解到我们可以使用onKeyDown()函数来处理控件。然而,即使我在我的代码中使用它,当我点击后退按钮时,该函数也不会被调用。以下是该函数:
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
      Log.d(null,"In on Key Down");
      if (keyCode == KeyEvent.KEYCODE_BACK) {
          moveTaskToBack(true);
          return true;
      }
      return super.onKeyDown(keyCode, event);
  }

请建议,如果有人遇到相同/类似的情况。
6个回答

18

按下后退按钮时调用的活动函数为onBackPressed。

void onBackPressed() 当活动检测到用户按下后退键时调用。

如果你来这里是为了这个而不是为了保存状态,请点赞 :P


7

使用Activity生命周期方法来保存和恢复状态。您可以在onPause期间保存状态,并在onResume中恢复。在您的活动中:

 @Override
protected void onPause()
{
super.onPause();
    //Save state here
}

@Override
protected void onResume()
{
super.onResume();
    //Restore state here
}

你也可以在onStart/onStop中实现这个功能。请查看此处的活动生命周期:http://developer.android.com/reference/android/app/Activity.html

嗨,谢谢回复。在发布这篇文章之前,我尝试重写onPause()方法,但是无论如何,每当我按下返回按钮时,该函数都没有被调用。因此,我正在寻找替代方法。 - tech_learner

0
在后面的条件中将返回值更改为false。
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Log.d(null,"In on Key Down");
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            moveTaskToBack(true);
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

0

您不必覆盖返回按钮的行为来保存活动的状态。

只需重写onPause()并保存任何想要的持久状态即可。


0

onPause中将更改保存到SharedPreferences并将更改提交回您的SQLite数据库。在onResume中加载它们。

为了保存您的活动的当前状态(例如,用户打开了哪个选项卡),请利用 onSaveInstance(Bundle outState)和传递给您的BundleonCreate (Bundle savedInstanceState)中存储和检索此信息。


0
嘿,如果你真的想在用户按下返回按钮时检测到它,你必须在你的活动中重写onBackPressed()方法。 如果你想在数据库中存储一个状态,你可以重写onDestroy()方法并在那里进行存储。当活动再次启动时,你可以在onCreate()方法中读取它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接