Ste*_*bbi 2 android android-activity
我有一个BroadcastReceiver,我用它来发送数据到另一个可能正在运行或未运行的活动.我在onReceive()方法中使用intent,并使用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);
}
Run Code Online (Sandbox Code Playgroud)
如果我不使用FLAG_ACTIVITY_NEW_TASK,则抛出RuntimeException,特别告诉我如果我想从非活动的东西开始活动,我必须使用FLAG_ACTIVITY_NEW_TASK.
如果您想将可能正在运行的活动放在前面,并完成可能在其上的任何其他活动,您可以指定以下标志:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当您收到此意图的活动已在运行时,onNewIntent()将调用该方法,而不是从头开始重新创建它.
如果您只想在所需活动运行时(即将其移动到堆栈顶部)对活动进行重新排序,请尝试以下操作:
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6375 次 |
| 最近记录: |