Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果活动为“singleTask”,如何获取额外的意图?_Android_Android Intent_Android Activity - Fatal编程技术网

Android 如果活动为“singleTask”,如何获取额外的意图?

Android 如果活动为“singleTask”,如何获取额外的意图?,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有一项活动,这是一项单独的任务: public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.out.printf("### MyAci

我有一项活动,这是一项单独的任务:

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        System.out.printf("### MyAcitvity.onCreate: " + getIntent().getExtras());
    }

    @Override
    protected void onResume() {
        super.onResume();
        System.out.println("### MyActivity.onResume: " + getIntent().getExtras());
    }

    public void toNext(View v) {
        startActivity(new Intent(this, AaaActivity.class));
    }
}
以及:

在后者中,有一个按钮将触发
jumpToFirst
方法启动第一个方法,并传递一个数据对
aaa=bbb
。由于
MyActivity
singleTask
,因此它不会创建新的任务,而是返回现有的
MyActivity
实例

我的问题是:如何从
MyActivity
中的
AaaActivity
获取传递的额外数据

您可以看到我已经记录了
onCreate
onResume
方法,但它会打印空的额外数据

11-16 08:44:17.833: INFO/System.out(5171): ### MyAcitvity.onCreate: null
11-16 08:44:19.417: INFO/System.out(5171): ### MyActivity.onResume: null
11-16 08:44:26.041: INFO/System.out(5171): ### MyActivity.onResume: null
11-16 08:44:28.897: INFO/System.out(5171): ### MyActivity.onResume: null
尝试将
MyActivity
的启动模式类型设置为singleTop,然后覆盖以下方法以查找新的意图:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    //now getIntent() should always return the last received intent
}

如果必须有单个任务,则使用以下标志:

 resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TASK);
如果您使用PendingEvent,那么:PendingEvent.FLAG_CANCEL_CURRENT:

pIntent = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_CANCEL_CURRENT ); 

(也可以在活动中使用
onNewIntent
来处理额外的任务。)

此解决方案也适用于我使用singleTask的启动模式。使用singleTask,我传递的额外任务将以不同的值接收。这真的节省了我的一天!我的问题是:我通过应用程序中的按钮打开了另一个应用程序,然后我真的很难从这个共享应用程序中接收到意图内容——根本没有任何反应。Thx用于此解决方案。它还与singleInstance的launchMode一起工作。谢谢。非常感谢,当使用
FLAG\u activity\u SINGLE\u TOP
启动活动时,活动的启动路径是
onNewIntent-->onStart-->onResume
 resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TASK);
pIntent = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_CANCEL_CURRENT );