带来前台活动并获得额外服务

时间:2014-07-24 13:26:48

标签: android

当我使用标记Intent.FLAG_ACTIVITY_REORDER_TO_FRONT时,如何从意图中获取额外内容?这可能吗?

Intent i = new Intent(ctx, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.putExtra("a", "abc");
startActivity(i);       

MyActivity 中,我得到null:

@Override
protected void onResume() {
    super.onResume();
    Log.i(TAG, getIntent().getExtras()+""); // <- get null
}

2 个答案:

答案 0 :(得分:4)

覆盖 MyActivity

中的Activity.onNewIntent()方法
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);

    // something you want
}

正常的onResume()生命周期将在调用onNewIntent()之后生效。

答案 1 :(得分:1)

您的第一个活动使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT启动MyActivity。这意味着如果任务堆栈中已存在活动(未完成)的MyActivity实例,则此活动实例将简单地移动到前端(活动堆栈的顶部)。在这种情况下,MyActivity上的onCreate()将不会被调用,因为它不会重新创建活动。而是将调用onNewIntent()。您尚未在MyActivity中覆盖此方法。

你应该覆盖onNewIntent()并从你在onNewIntent()中收到的Intent参数中传递的额外内容中提取数据。