Android 中不同进程的调用及传值
// packageName : 要启动的Activity的包名
// className : 要启动的Activity
Intent intent = new Intent();
String packageName = "com.example.test.myapplication";
String className = "com.example.test.myapplication.MainActivity";
intent.setClassName(packageName, className);
intent.putExtra("test", "hahah");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, 1);
# 注意在启动的另一个进程的Activity,并进行反传值的时候会出现传值不成功的情况,仔细琢磨发现其
中的原因是在进行跳转之前就先执行了OnActivityResult()方法,其原因是因为在代码中添加了这一
条:`intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);`
原因分析:
FLAG_ACTIVITY_NEW_TASK:当Intent对象包含这个标记时,系统会寻找或创建一个新的task来放置目标Activity,寻找时依据目标Activity的taskAffinity属性进行匹配,如果找到一个task的taskAffinity与之相同,就将目标Activity压入此task中,如果查找无果,则创建一个新的task,并将该task的taskAffinity设置为目标Activity的taskActivity,将目标Activity放置于此task。注意,如果同一个应用中Activity的taskAffinity都使用默认值或都设置相同值时,应用内的Activity之间的跳转使用这个标记是没有意义的,因为当前应用task就是目标Activity最好的宿主
当不加此属性时:
当加上此属性时: