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 );