如何将附加内容传递给已经运行的活动

Ayr*_*nna 24 java android android-intent android-activity

我有一个BroadcastReceiver启动了HomeActivity一些与附加信息一起传递的信息.

当活动已经运行并且广播接收器再次被触发并尝试HomeActivity使用新信息启动时会发生什么.活动OnResume()OnCreate()活动是否执行?

如果没有,是否有任何其他方式在BroadcastReceiver触发时传递/重新加载正在运行的活动?

Cor*_*Roy 40

确保从BroadcastReceiver启动intent时设置FLAG_ACTIVITY_SINGLE_TOP标志.

intent.addFlags (FLAG_ACTIVITY_SINGLE_TOP);

...


class HomeActivity extends Activity {
   ...
   @Override
   protected void onNewIntent(Intent intent) {
      Bundle extras = intent.getExtras();
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)


Ami*_*.io 6

只是扩展 Cory Roy 的答案,您也必须在 AndroidManifest.xml 中定义“SingleTop”。

<activity
        android:name="MainActivity"            
        android:launchMode="singleTop"
Run Code Online (Sandbox Code Playgroud)

看来扩展 android.support.v7.app.ActionBarActivity 这个方法不起作用......

  • 这似乎没有必要!这意味着默认启动模式是“singleTop”。您可能不希望这样并且仅用于通知 (2认同)