2011-03-23 64 views
4

单击android上的后退按钮时调用的函数。我的要求是当应用程序正在运行并且用户单击后退按钮时,应用程序的状态应该存储到数据库中,并且每当他返回到应用程序时,用户应该能够看到状态。在后退按钮单击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

使用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

+0

嗨,感谢您的答复内返回错误。我在这里发布之前尝试覆盖onPause(),但不管怎样,只要按下后退按钮,函数就不会被调用。所以我找到了一个替代方案。 – 2011-03-23 18:19:43

0

您不必重写后退按钮行为来保存活动的状态。

只需覆盖onPause()并保存您想要的任何持久状态。

0

保存更改SharedPreferences和更改提交回你SQLite数据库。将它们加载到onResume

为了保存您的活动的当前状态(例如,用户打开了哪个标签页),请使用onSaveInstance(Bundle outState)和传送给您onCreate (Bundle savedInstanceState)以存储和检索此信息。

13

当您按下后退按钮时调用的活动函数是onBackPressed。

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

给予好评,如果你来到这里,这和不是专为节能状态:P

0

更改找回状态

@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); 

}