【问题标题】:Android clear data when app goes to background应用程序进入后台时Android清除数据
【发布时间】:2013-10-12 08:48:06
【问题描述】:

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

请帮忙

【问题讨论】:

    标签: android background android-activity


    【解决方案1】:

    我认为您有两种方法可以实现您的目标,一种是在包含您的数据的 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 
    
        }
    });
    

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2018-07-10
        • 1970-01-01
        • 1970-01-01
        • 2013-02-27
        • 2012-06-11
        • 1970-01-01
        相关资源
        最近更新 更多