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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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怎么跳转页面

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux安装启动nginx_centos7 安装

    linux安装启动nginx_centos7 安装环境:VMware16pro,centos7解决:安装nginx前的准备安装gcc环境:在官网下载的nginx源码需要编译,所以需要gcc环境。yuminstallgcc-c++安装PCREpcre-develNginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码。安装命令如下:yuminstall-ypcr

  • Pycharm配置Pyqt5(精细版)[通俗易懂]

    Pycharm配置Pyqt5(精细版)[通俗易懂]Pycharm配置Pyqt5(精细版)前言最近入手了一些关于Qt的项目开发,需要用到Pycharm与Pyqt5的一个结合,当然在安装时也是有一些小坑的,下面我来为大家分享一下在Pycharm中配置Pyqt5的过程。环境配置1、创建虚拟环境:condacreate-nmy_pyqtpython=x.x命令创建python版本为x.x(本人用的3.7)、名字为my_pyqt的虚拟环境。my_pyqt文件可以在Anaconda安装目录envs文件下找到。2、切换/激活虚拟环境:conda

  • 牛逼plus的springboot+maven车牌识别开源系统

    牛逼plus的springboot+maven车牌识别开源系统

    2020年11月13日
  • phpstrom激活码(JetBrains全家桶)

    (phpstrom激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 常用加密方式

    常用加密方式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8&quo

  • vue组件化的理解_vue的组件化是如何实现的

    vue组件化的理解_vue的组件化是如何实现的前言有时候有一组html结构的代码,并且这个上面可能还绑定了事件。然后这段代码可能有多个地方都被使用到了,如果都是拷贝来拷贝去,很多代码都是重复的,包括事件部分的代码都是重复的。那么这时候我们就可以

发表回复

您的电子邮箱地址不会被公开。

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