假设有4个Activity: A,B,C,D
他们生成的顺序是: A->B->C->D
Activity之间的跳转,有几个方法:
1. startActivity,用于直接跳转
情景:从 A 跳转到 C:
Intent intent = new Intent(A.this, C.class);
startActivity(intent );
2. startActivityForResult,用于跳转之后,希望得到一个回应
情景:A跳转到B,B结束之后返回一个结果给A
2.1. Activity A的代码:
2.1.1. 跳转代码
Intent intent = new Intent(FriendActivity.this, TalkActivity.class);
int requestCode = 100;
intent.putExtra("param1",param1);
startActivityForResult(intent, requestCode);
2.1.2. 复写 onActivityResult
2.2. Activity B的代码:
Intent intent = new Intent();
intent.putExtra("data", data);
int resultCode = 100;
setResult(resultCode,intent);
3. 跳转到一个已经存在的Activity,避免已经存在的Activity 调用OnCreate()
情景:A跳转到B,B再跳转到C,等C结束之后,想直接跳转到A
3.1. 在跳转的地方(Activity C):
Intent intent = new Intent(C.this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
3.2. 在AndroidManifest.xml 中将A的launchMode设置为“singleTop”
<activity android:name="A" android:launchMode="singleTop" />
3.3. 在Activity A 复写onNewIntent,将要特别处理的逻辑在这里处理
Reference:
http://stackoverflow.com/questions/2424488/android-new-intent-starts-new-instance-with-androidlaunchmode-singletop