2

我正在尝试从广播接收器的onReceive()方法中恢复活动,如下所示:

Intent i = new Intent(context, TimerSet.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

然而,活动 ( TimerSet.class) 被重新创建而不是恢复。我发现这个问题的唯一推荐解决方案是使用FLAG_ACTIVITY_REORDER_TO_FRONT但我已经在使用它。

此外, usingIntent.FLAG_ACTIVITY_NEW_TASK不适合我的用例,但是当我不提供它时会出现以下异常:

android:util.AndroidRuntimeException: Calling startActivity() from outside of an 
Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you 
want?
4

2 回答 2

4

我不确定这是否正是你的问题,但我有一种情况,我收到通知,我想在不启动新实例的情况下启动我的应用程序(如果它已经在运行)我终于发现这些会起作用。如果活动已经在运行,则 FLAG_ACTIVITY_NEW_TASK 不会开始新的瞬间。但是,它会将其添加到现有堆栈中。因此,我们可以做一个 FLAG_ACTIVITY_CLEAR_TOP,这样 back 将把用户带到主屏幕而不是之前的状态。

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
于 2013-05-14T00:07:15.577 回答
1

删除 FLAG_ACTIVITY_NEW_TASK 标志。还要添加这个标志 -> FLAG_ACTIVITY_CLEAR_TOP。如果已经存在,这将阻止创建新活动。

于 2013-02-18T06:15:51.757 回答