0

我有一个应用程序可以打开多个活动。

活动 A -> 活动 B -> 活动 C

我想注销并关闭所有打开的活动。我已经阅读了许多描述如何执行此操作的不同链接。

注销时,清除 Activity 历史堆栈,防止“返回”按钮打开仅登录的 Activity

关闭android应用程序中所有正在运行的活动?

然而,问题在于 Intent Flags 仅适用于 API 级别 11 及更高级别。我有一个应用程序,我希望它可用于 API 级别 8 及更高级别。我知道它可以追溯到很久以前,但是对于 API 8 级来说,实现这一目标的最佳方法是什么?

还是我应该放弃并达到最低 11 级?

4

4 回答 4

2

Intent intent = new Intent(this, LoginActivity.class); 意图.setFlags(意图.FLAG_ACTIVITY_CLEAR_TOP);开始活动(意图);``

于 2014-01-19T10:02:34.917 回答
0

好的,您可以做一件事来获取应用程序的 ProcessID,然后在 onDestroy() 中终止该进程。就是这个链接如何以编程方式强制停止我的android应用程序?

int pid=android.os.Process.myPid();
android.os.Process.killProcess(pid);

您可以使用其中一位用户告诉使用 startActivityForResult() 和 onActivityResult() 的替代方法,即使在 API 级别 8 上也可以正常工作。

为此你需要使用

 startActivityForResult() instead of startActivty. and onActivtyResult() for you work.
于 2014-01-19T10:12:41.673 回答
0

你说“我想注销并关闭所有打开的活动”。, Intent.FLAG_ACTIVITY_CLEAR_TOP 适用于 API 级别 8 , 我已经在应用程序中加入了注销功能, 这种方式已经在商店中, 但如果我理解正确, 会有一个区别, 注销进入 LoginActivity , 注销不会杀死进程或类似的东西这违背了Android的概念。无论如何,当您按照上面的建议执行此操作时,您甚至可以执行此操作:

  void logout() {
        Intent intent = new Intent(this, LoginActivity.class);
        intent.putExtra("finish", true);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
   }

然后在 LoginActivity 中,您可以在 onCreate 方法中额外搜索“完成”布尔值并完成该活动。

@Override public void onCreate(Bundle state) {
    super.onCreate(state);
    if (getIntent().getBooleanExtra("finish", false)) finish();
}
于 2014-01-19T10:31:17.947 回答
0

你试过这个吗?

   void signOut() {
        Intent intent = new Intent(this, HomeActivity.class);
        intent.putExtra("finish", true);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities *not necessary*
        startActivity(intent);
        finish();
   }

从这个答案

于 2013-09-12T22:05:27.977 回答