Android中跳转Activity有几种方法_java怎么跳转页面

Android中跳转Activity有几种方法_java怎么跳转页面FLAG_ACTIVITY_NEW_TASK标记了FLAG_ACTIVITY_NEW_TASK,就一定会创建一个新的TASK吗,实验证明这是一个必要条件,还要结合taskAffinity来看,A.如果和H5Activity具有相应的亲戚存在了,那么只是会把H5Activity加入的亲缘的TASK中B.如果和H5Activity没有对应的亲缘关系的TASK,那么就会创建一个新的TASK了p


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

知识储备参考地址:http://blog.csdn.net/ljz2009y/article/details/26621815 FLAG_ACTIVITY_NEW_TASK

标记了FLAG_ACTIVITY_NEW_TASK,就一定会创建一个新的TASK吗,实验证明这是一个必要条件,还要结合taskAffinity来看,
A .如果和H5Activity 具有相应的亲戚存在了,那么只是会把H5Activity 加入的亲缘的TASK中
B. 如果和H5Activity 没有对应的亲缘关系的TASK,那么就会创建一个新的TASK了

public static void startActivity(Context context, Bundle extras) { Intent intent = new Intent(context, H5Activity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (extras != null) intent.putExtras(extras); context.startActivity(intent);}

应用场景举例:
会想一下,我们打开升级面板(和当前应用的TASK亲缘关系肯定不同)的时候是不是增加了一个FLAG_ACTIVITY_NEW_TASK,从而避免升级界面加入当前应用的TASK,
从而避免升级过程中应用推出导致升级面板也退出的情况

singleTask


这个属性其实被会系统当作FLAG_ACTIVITY_NEW_TASK 理解,这里我们把亲缘关系设置为其他APP的包名(一个APP的默认亲缘关系就是包名),
那么另外一个APP的在进程中是维持在首页的(other app HomeActivity),和SencondActivity 属于相同的TASK,返回或者 finish掉都是回到 
上一个界面(HomeActivity,当然前提是另外一个HomeActivity得在任务栈中)

    <activity
        android:name=".SenondActivity"
        android:launchMode="singleTask"
        android:taskAffinity="com.otherapp.package"
        >
    </activity>

public class SenondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_senond);
        findViewById(R.id.testTv2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }
}

关于空taskAffinity的测试结论:

taskAffinity如果为空,那么空taskAffinity之间的TASK没有亲缘关系,展示如下

Android中跳转Activity有几种方法_java怎么跳转页面

不为空有亲缘关系的展示如下


Android中跳转Activity有几种方法_java怎么跳转页面

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188496.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • sikuli python java_自动化测试之sikuli调研

    sikuli python java_自动化测试之sikuli调研调研结果Sikuli可用于web和app的自动化测试中,操作简单,代码容易,但截图过程太过繁琐,所需要的图片内存占用量大,且sikuli的图片识别度较低,需对所要操作的图片进行精准截图。什么是SikuliMIT的研究人员设计了一种新颖的图形脚本语言Sikuli,计算机用户只须有最基本的编程技能(比如会写print”helloworld”),他不需要去写出一行行代码,而是用屏幕截图的方式,用截出来…

    2022年11月3日
  • Java考试题30道(附答案)

    Java考试题30道(附答案)1. 在WEB-INF目录下,必须存放的文件为:   BA.class文件B.web.xmlB.jar文件D.html文件2.下面哪个不是JAVA关键字  A  A integer  B double  C float  D default3. 构造函数何时被调用( )  BA.类定义时B.创建对象时C.调用对象方法时D.使用对象的变量时4. 下面哪项不是respons…

    2022年11月2日
  • VUE作用域插槽详解(<slot>、v-slot、slot-scope)「建议收藏」

    什么是插槽?插槽就是子组件中的提供给父组件使用的一个占位符,用表示,父组件可以在这个占位符中填充任何模板代码,如HTML、组件等,填充的内容会替换子组件的标签。插槽显不显示、怎样显示是由父组件来控制的,而插槽在哪里显示就由子组件来进行控制如下代码:在子组件中放一个占位符在父组件中给这个占位符填充内容:展示的效果:现在来看看,如果子组件中没有放插槽,同样的父组件中在子组件中填充内容,会是啥样的:子组件代码无插槽:2.父组件照常填充内容:3.展示的效果:总结:如果

    2022年4月13日
  • No mapping found for HTTP request with URI [xxxx] in DispatcherServlet with name ‘xxx’「建议收藏」

    No mapping found for HTTP request with URI [xxxx] in DispatcherServlet with name ‘xxx’「建议收藏」搭建SSM环境时测试springMVC时出现个很有趣的问题: 测试webapp下的index.jsp没问题,但是测试hello就出现问题。当访问hello时出现如下问题:解决方案:         之前扫描包时这样:           &lt;context:component-scan base-package="com.itshenjin.controller.*…

    2022年6月13日
  • moebius for sql server下载_大数据集群规模选择

    moebius for sql server下载_大数据集群规模选择一、Moebius集群的架构及原理1、无共享磁盘架构Moebius集群采用无共享磁盘架构设计,各个机器可以不连接一个共享的设备,数据可以存储在每个机器自己的存储介质中。这样每个机器就不需要硬件上的

    2022年8月6日
  • VirtualBox安装Debian6的方法和步骤(详细)

    VirtualBox安装Debian6的方法和步骤(详细)下面是用VirtualBox安装Debian6的方法和步骤l新建一个文件夹,用于存放虚拟硬盘,如Debianl打开VirtualBox,点击新建l输入虚拟机名称,Debian_6l给虚拟机分配

    2022年7月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号