我有一个 BroadcastReceiver 用于将数据发送到另一个可能正在运行或未运行的活动。我在 onReceive() 方法中使用意图,并使用 putExtra() 放入数据。数据被发送到活动,但是,即使活动已经在运行并且在前台,活动的 onCreate() 方法也会被调用,所以我猜它正在创建一个新实例。我只想调用 onResume() ,或者如果它不存在,我可能还有其他方法可以创建/启动意图,如果存在,就让它“恢复”。现在,正在重新创建活动,我不希望这样。
public void onReceive(Context context, Intent intent) {
intent.setClass(context, MyActivity.class);
intent.putExtra("message", "the data here");
//intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d("sending msg", "msg");
context.startActivity(intent);
}
如果我不使用 FLAG_ACTIVITY_NEW_TASK,则会抛出 RuntimeException,特别告诉我,如果我想从非活动的东西开始活动,我必须使用FLAG_ACTIVITY_NEW_TASK
.