1
Intent goMain = new Intent(getBaseContext(),MainActivity.class);

goMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
goMain.putExtras(extras);
getApplicationContext().startActivity(goMain);

我想要做的是,从一个单独的IntentServiceo 发送数据,并且只有MainActivity. 发生的事情和我不希望发生的事情是带来一项新活动,而不是当前正在运行的活动。此外,当前正在运行的活动不显示从意图服务发送的数据。当我尝试删除时FLAG_ACTIVITY_NEW_TASK,我得到“从 Activity 上下文之外调用 startActivity() 需要FLAG_ACTIVITY_NEW_TASK标志”错误。谁能帮我这个?提前致谢。

4

1 回答 1

2

使用Intent.FLAG_ACTIVITY_CLEAR_TASK导致您的问题。如果要使用 的现有实例Activity,请使用以下标志集:

goMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
            Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

设置Intent.FLAG_ACTIVITY_CLEAR_TOP将从任务堆栈中删除位于MainActivity.

设置Intent.FLAG_ACTIVITY_SINGLE_TOP将确保使用现有的实例MainActivity并且不会创建新的实例。

MainActivity.onNewIntent()将与Intent您使用的一起调用。

于 2015-02-01T23:00:40.860 回答