当应用程序转到后台时,Android清除数据

时间:2013-10-12 08:48:06

标签: android background android-activity

我有一个应用程序(许多活动)。我想在应用程序变为后台时清除一些值,例如用户凭据。我怎么知道应用程序何时进入后台?我试图拦截主页按钮,但似乎我们不能这样做。如果我调用onPause(),每次从一个活动移动到另一个活动时它都会被调用。我搜索了很多但没有得到任何具体的东西。

请帮忙

2 个答案:

答案 0 :(得分:0)

我认为您有两种方法可以实现您的目标:一种是在您的活动的onStop()状态中清除您的数据,其中包含您的数据,另一种方式是(如您所述)捕捉主页新闻事件。

用于检测主页新闻事件,您应该覆盖:onAttachedToWindow()

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);           
}

然后清除您的数据:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {     

    if(keyCode == KeyEvent.KEYCODE_HOME)
    {

       //Put your Codes here to Clear Data 

    }
});

答案 1 :(得分:0)

Android很难实现,因为没有具体的应用程序定义到后台。检测主页密钥是不够的,因为还有许多其他事件会导致您的应用失去焦点。

例如,来电会导致您的应用“转到后台”但对用户而言,情况似乎并非如此。

实现所需内容的一种可能方法是使用活动的OnPause和OnResume方法与应用程序类中的服务或简单任务进行通信。 (任何与您的活动无关的东西)。

调用OnPause时,启动计时器。调用OnResume时,请停止计时器。

如果计时器未在特定时间段内停止,那么您可以在后台考虑该应用程序并清除数据。

留出足够的时间来处理简单的更改,例如上面的来电示例。也许一两分钟,具体取决于你的情况。