在背景中关闭应用程序一段时间后

时间:2015-09-12 20:28:32

标签: java android exit

我正在寻找一种方法来关闭Android应用程序一段时间后应用程序还没有成为焦点。例如,如果用户打开另一个应用程序,应用程序应在5分钟后退出。我尝试过使用runnable并创建一个线程。但是当应用程序处于后台时,这些方法似乎不起作用(可能它们暂停我不确定)。那么如何在关注应用程序时关闭它?

对于那些奇怪我想要这样做的人来说,这个应用程序包含一些关于用户的敏感数据,因此我想确保在他们没有使用它时全部清除。

4 个答案:

答案 0 :(得分:1)

这样的事可能有用:

活动类内的字段:

private Thread t = null;

内部onResume()

if(t!=null) {
    if(t.isAlive()) {
        t.interrupt();
        t.join();
    }
    t=null;
}

内部onPause()

t = new Thread() {
    public void run() {
            try {
                sleep(5*60*1000);
                // Wipe your valuable data here
                System.exit(0);
            } catch (InterruptedException e) {
                return;
            }
    }.start();
}

答案 1 :(得分:0)

获取应用程序的进程ID,并终止该进程onDestroy()方法

@Override
public void onDestroy()
{
   super.onDestroy();

   int id= android.os.Process.myPid();

   android.os.Process.killProcess(id);
}

参考 - how to close/stop running application on background android

编辑 - 与AlarmManager一起使用

答案 2 :(得分:0)

我建议在finish()onPause()回调中调用onStop()TimerTask无法生存onPause(),并且面值不会显示服务,以便为您提供选项。也许你可以启动服务,睡眠服务运行的线程,然后在睡眠定时器到期后终止你的应用程序。

或者,您可以实施一些安全库来帮助保护其他应用程序的数据安全。

Here是Google服务链接。

答案 3 :(得分:0)

您尝试执行的操作的根本问题在于,当Activity在后​​台“运行”时,它可能根本不存在于内存中。 Android框架可能已经破坏了活动实例甚至它正在运行的进程。所有存在的可能是您在onSaveInstanceState(...)中保存的持久状态以及最近应用列表的屏幕截图。你可能没有任何东西可以参考和杀死。

finish()中致电onPause()

Frank Brenyah's suggestion会阻止您的活动在后台运行,但这是您可以获得所需内容的最接近的活动。您可能只想在isChangingConfigurations()为false时执行此操作。但即使您的所有应用程序的活动都已完成,Android也可以保留该过程并Application实例,以避免以后重新创建它们。因此,您可能还希望使用Bhush_techidiot's suggestion来终止该过程。在onPause()中执行此操作,因为可能会在未调用onDestroy()的情况下销毁活动。

相关问题