如果活动是“singleTask”,如何获得额外的意图?

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

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

和:

 <activity android:name=".MyActivity" android:launchMode="singleTask" /> 

不,它已经启动,并开始了另一个名为AaaActivity活动。

 public class AaaActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.aaa); } public void jumpToFirst(View v) { Intent intent = new Intent(this, MyActivity.class); intent.putExtra("aaa","bbb"); startActivity(intent); } } 

在后面的那个,有一个button会触发jumpToFirst方法来启动第一个方法,并传递一个数据对aaa=bbb 。 由于MyActivitysingleTask ,它不会创build一个新的,而是只返回到现有的MyActivity实例。

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

你可以看到我已经login创build和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 

Solutions Collecting From Web of "如果活动是“singleTask”,如何获得额外的意图?"

尝试将MyActivity的launchModetypes设置为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); 

如果你使用PendingIntent,那么也是这样的:PendingIntent.FLAG_CANCEL_CURRENT:

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

(也可以在你的活动中使用onNewIntent来处理额外事件。)