2013-10-12 35 views
0

我有一个应用程序(许多活动)。我想在应用程序变为背景时清除用户凭据等少数值。我如何知道应用程序何时启动?我试图拦截主页按钮,但似乎我们不能这样做。如果我调用onPause(),它会在每次从一个活动移动到另一个活动时被调用。我搜查了很多,但没有得到任何具体的东西。当应用程序转到背景时Android清除数据

请帮

回答

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 

    } 
}); 
0

这是很难用Android作为有一个应用程序将没有具体定义的背景。检测主键是不够的,因为有很多其他事件会导致您的应用程序失去焦点。

例如,来电会导致您的应用程序“去背景”,但对用户来说,这似乎并不是这种情况。

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

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

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

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