3 回答
TA贡献1828条经验 获得超6个赞
当您使用finish()方法时,它不会完全关闭该进程,它仍然在后台运行。
请在主要活动中使用此代码(请不要在每个活动或子活动中使用):
@Override
public void onBackPressed() {
android.os.Process.killProcess(android.os.Process.myPid());
// This above line close correctly
}
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:将密码存储在变量中,以便在应用程序关闭时将其销毁。
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平台得到的这个问题的答案是:“不要制作退出按钮。完成用户不再需要的活动,活动管理器会根据需要清理它们。”
- 3 回答
- 0 关注
- 360 浏览
添加回答
举报