0

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

请帮忙

4

2 回答 2

0

我认为你有两种方法可以实现你的目标,一种是在包含你的数据的 Activity 的 onStop() 状态下清除你的数据,另一种方法是(正如你提到的)Catching Home Press 事件。

为了检测主页新闻事件,您应该覆盖: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 

    }
});
于 2013-10-12T08:53:45.523 回答
0

这对 Android 来说很困难,因为没有对进入后台的应用程序的具体定义。检测 home 键是不够的,因为还有许多其他事件会导致您的应用失去焦点。

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

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

当调用 OnPause 时,启动一个计时器。调用 OnResume 时,停止计时器。

如果计时器在特定时间段内没有停止,那么您会认为应用程序“在后台”并可以清除数据。

留出足够的时间来处理简单的更改,例如上面的来电示例。根据您的情况,可能需要一两分钟。

于 2013-10-12T09:04:50.163 回答