Android 中不同进程的调用及传值介绍

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

原文:http://blog.csdn.net/liuhe688/article/details/6761337


原因分析:
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最好的宿主
当不加此属性时:
这里写图片描述
当加上此属性时:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_33768280/article/details/78765555