假设有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. ActivityA的代码:

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. ActivityB的代码:

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


更多相关文章

  1. Android(安卓)6.0系统读写文件出现FileNotFoundException:EACCES
  2. android studio 代码插件常用code整理
  3. 简述compileSdkVersion,minSdkVersion,targetSdkVersion
  4. Android(安卓)RecyclerView单击、长按事件:基于OnItemTouchListe
  5. gallery3d源码学习总结(二)
  6. Android应用程序权限机制的源代码分析(2)
  7. Android中View跟随手指滑动效果的实例代码
  8. AIDL使用详解(一)
  9. 实战试用 Android(安卓)NDK 初见成效

随机推荐

  1. 用shell脚本生成.x509.pem 和.pk8 文件并
  2. Android(安卓)AppWidget系统框架
  3. WebView 知识点
  4. Android开发之旅: Intents和Intent Filte
  5. 【Android基础】讲讲Android的事件分发机
  6. Android实现WebView删除缓存的方法
  7. android电话接听过程简单解析
  8. Android输入法弹出时覆盖输入框问题
  9. 浅谈Android下的Wifi&&安卓WIFI 移植
  10. Android(安卓)短信解析