我有一个启动活动的后台服务,
Intent i = new Intent(this, MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
销毁此Activity并通过“长按home键菜单”重新启动后,此Activity再次启动。但我想开始主要活动。我怎么能意识到这一点?
我有一个启动活动的后台服务,
Intent i = new Intent(this, MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
销毁此Activity并通过“长按home键菜单”重新启动后,此Activity再次启动。但我想开始主要活动。我怎么能意识到这一点?
你能更详细地解释一下吗?如果我了解您的问题,请尝试设置 FLAG_ACTIVITY_NO_HISTORY。
或者,手动解决方案是检查 MyActivity 中意图的 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 并在看到此标志集时启动到主要活动。下面的代码应该做到这一点:
if ((getIntent().getFlags() & FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) > 0) {
activity.startActivity(new Intent(context , MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
}
问题就像您从服务开始活动-->通知来了-->用户再次启动应用程序-->没有通知-->主活动出现在前台现在如果应用程序是从“长按主键菜单”启动的" 主要活动正在启动并显示通知。
因此,一项明确的解决方案是将主要活动设为“从最近排除 = true”和“无历史记录 = true;” 用户将无法在“长按主键菜单”中看到您的活动