记录Intent的几种Flag

2024-06-12 09:48
文章标签 记录 flag 几种 intent

本文主要是介绍记录Intent的几种Flag,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写的比较乱,只是作为自己的一个笔记,参考价值不高。

1. FLAG_ACTIVITY_NEW_TASK标签测试

2. FLAG_ACTIVITY_CLEAR_TOP标签测试

3. FLAG_ACTIVITY_CLEAR_TASK标签测试

4. FLAG_ACTIVITY_SINGLE_TOP标签测试

首先是新建两个Activity,分别为MainActivity和SecondActivity。两个Activity中绑定分别一个按钮

1.FLAG_ACTIVITY_NEW_TASK

MainActivity:

    public void onJump(View view){Intent intent = new Intent(this,SecondActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
//        Log.d(TAG,"create");Log.d(TAG, "1onCreate: "+this.toString()+", taskId="+this.getTaskId());}

SecondActivity

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.second);Log.d(TAG, "2onCreate: "+this.toString()+", taskId="+this.getTaskId());}public void onBack(View view) {Intent intent = new Intent(this,MainActivity.class);startActivity(intent);}

这个时候,启动顺序是 MainActivity->SecondActivity->MainActivity->SecondActivity

启动提取日志:


结果分析:MainActivity和SecondActivity在同一个task中,依次按返回键退出的时候,会依次退出很多activity,说明是不同的activity实例。此时的FLAG_ACTIVITY_NEW_TASK并没有什么作用。

2.FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TOP一块应用,启动顺序依然是MainActivity->SecondActivity->MainActivity->SecondActivity,此时结果图



结果分析,依然在同一个task中,唯一不同的是,每次从MainActivity到SecondActivity的时候,会清除task中 SecondActivity上面的实例,也就是说,之创建了一个SecondActivity。
3,使MainActivity和SecondActivity在不同的 android:taskAffinity中。修改manifest


此时MainActivity中的启动SecondActivity的标签依然是FLAG_ACTIVITY_NEW_TASK,这时候启动MainActivity->SecondActivity->MainActivity->SecondActivity

结果是


在从MainActivity->SecondActivity->MainActivity之后,继续点击MainActivity中的onJump方法发现无反应,也就是说没法继续跳转。结果分析可得:跳转到SecondActivity后,只创建了一个实例,当从SecondActivity再次跳转到MainActivity后,SeconActivity实例保存在新的task底部,此时,顶部是同task中的MainActivity,然而MainActivity中启动flag是FLAG_ACTIVITY_NEW_TASK,无法清除位于栈顶的自己,所以无法跳转。



这篇关于记录Intent的几种Flag的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053874

相关文章

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi