为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用其所有活动杀死应用程序?

如何使用其所有活动杀死应用程序?

哈士奇WWW 2019-08-13 15:58:12
如何使用其所有活动杀死应用程序?我想为用户提供退出应用程序的选项,因为我需要删除一些敏感数据,只要应用程序需要它就存储在SharedPreferences中。一旦用户想要退出,应该擦除SharedPreferences中的密码,当然应该关闭应用程序的所有活动(没有已知密码运行它们是没有意义的 - 它们会崩溃)。我怎样才能做到这一点?System.exit(0)并且finish()只退出当前活动 - 没用。我知道有一个taskmanager应用程序。怎么那样呢?它能够杀死整个应用程序......
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

当您使用finish()方法时,它不会完全关闭该进程,它仍然在后台运行。


请在主要活动中使用此代码(请不要在每个活动或子活动中使用):


@Override

public void onBackPressed() {


    android.os.Process.killProcess(android.os.Process.myPid());

    // This above line close correctly

}


查看完整回答
反对 回复 2019-08-13
?
慕后森

TA贡献1802条经验 获得超5个赞

你是对的:调用finish()只会退出当前活动,而不是整个应用程序。但是,有一个解决方法:

每次启动Activity时,都要使用它startActivityForResult(...)。如果要关闭整个应用,可以执行以下操作:

setResult(RESULT_CLOSE_ALL);finish();

然后定义每个活动的onActivityResult(...)回调,这样当活动返回RESULT_CLOSE_ALL值时,它还会调用finish()

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(resultCode)
    {
    case RESULT_CLOSE_ALL:
        setResult(RESULT_CLOSE_ALL);
        finish();
    }
    super.onActivityResult(requestCode, resultCode, data);}

这将导致级联效应关闭所有活动。

此外,我在他的建议中支持CommonsWare:将密码存储在变量中,以便在应用程序关闭时将其销毁。


查看完整回答
反对 回复 2019-08-13
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

当用户希望退出所有打开的活动时,他们应该按下一个按钮,加载应用程序启动时运行的第一个Activity,在我的案例中为“LoginActivity”。

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra("EXIT", true);startActivity(intent);

上面的代码清除除LoginActivity之外的所有活动。LoginActivity是用户运行程序时提出的第一个活动。然后将此代码放入LoginActivity的onCreate中,以指示何时传递'Exit'消息时它应该自毁。

    if (getIntent().getBooleanExtra("EXIT", false)) {
         finish();
    }

从Android平台得到的这个问题的答案是:“不要制作退出按钮。完成用户不再需要的活动,活动管理器会根据需要清理它们。”


查看完整回答
反对 回复 2019-08-13
  • 3 回答
  • 0 关注
  • 360 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信