如何从BroadcastReceiver启动Activity()而不重新创建活动?

时间:2012-12-12 02:58:52

标签: android

我需要在广播接收器内接收广播事件,并将此信息传递给已经打开的活动。如何在不重新创建广播接收器的情况下通知活动?这会导致不需要的全部刷新。

现在我可以在活动中声明的广播接收器内接收意图,但我也需要在背景中接收意图,因此我处理意图的主要位置是在单独的广播接收器中。所以我只是不知道如何通知活动新的意图已经到来而没有onCreate()被调用并重新初始化整个UI。

我想我需要NEW_TASK标志,否则它将无法运行。

PS:这些疯狂的投票是什么?什么可能比如何以不重新创建活动的方式从广播接收器开始活动更相关。顺便说一句,我会找到你的答案。为什么苦涩的投票呢?我怀疑是因为你知道我可以使用答案。好吧,我很快就会在很快就找到这个好问题的答案。

2 个答案:

答案 0 :(得分:2)

如果要重新创建此活动,请执行以下操作:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

如果不想重新创建,只需执行此操作:

  • 此活动位于您的任务顶部,intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
  • 使用以下内容声明清单中的行为:android:lauchMode= "singleTask";

答案 1 :(得分:1)

答案是......

使用

声明清单中的活动
  android:launchMode="singleTop"

仍然希望对这个答案的反馈,因为我注意到在onResume()中,意图似乎没有像以前那样继承价值。所以我无法提取我在广播接收器内的意图上设置的值......

更新:为了从接收器获取值,您可能需要在Activity中执行以下操作:

             @Override 
     public void onNewIntent(Intent intent)
     {
         setIntent(intent);
     }