我有一个应用程序(许多活动)。当应用程序进入后台时,我想清除一些值,例如用户凭据。我怎么知道应用程序何时进入后台?我试图拦截主页按钮,但似乎我们不能这样做。如果我调用 onPause(),每次我从一个活动移动到另一个活动时都会调用它。我搜索了很多,但没有得到任何具体的东西。
请帮忙
我有一个应用程序(许多活动)。当应用程序进入后台时,我想清除一些值,例如用户凭据。我怎么知道应用程序何时进入后台?我试图拦截主页按钮,但似乎我们不能这样做。如果我调用 onPause(),每次我从一个活动移动到另一个活动时都会调用它。我搜索了很多,但没有得到任何具体的东西。
请帮忙
我认为你有两种方法可以实现你的目标,一种是在包含你的数据的 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
}
});
这对 Android 来说很困难,因为没有对进入后台的应用程序的具体定义。检测 home 键是不够的,因为还有许多其他事件会导致您的应用失去焦点。
例如,来电会导致您的应用程序“进入后台”,但对用户而言,情况似乎并非如此。
实现您想要的一种可能方法是使用活动的 OnPause 和 OnResume 方法与应用程序类中的服务或简单任务进行通信。(任何与您的活动无关的事情)。
当调用 OnPause 时,启动一个计时器。调用 OnResume 时,停止计时器。
如果计时器在特定时间段内没有停止,那么您会认为应用程序“在后台”并可以清除数据。
留出足够的时间来处理简单的更改,例如上面的来电示例。根据您的情况,可能需要一两分钟。