我有一个具有多个入口点活动的应用程序。我希望能够以编程方式清除我的活动堆栈。想象一个需要用户身份验证的应用程序,并且用户想要远程使他们的会话无效(例如,被盗的设备)。
在应用程序只有一个启动活动的情况下,我们可以使用:
Intent intent = new Intent(context, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
回到根活动。但是我的应用程序可能是从不同的入口点启动的,因此堆栈的根可能有不同的活动类。
一些选项:
- 在我可以从任何地方调用的基本活动类中注册一个广播接收器。在处理程序中,只需调用 finish(),展开可能存在的任何堆栈。
- 使用不受欢迎的 System.exit()。
- 在上面的示例中,除了其他两个标志外,还使用 Intent.FLAG_ACTIVITY_CLEAR_TASK(但这仅在 api 11 及更高版本中可用...)
谢谢