当前位置: 首页 > news >正文

Flag_AGtivity_clear_top网页编程指南如何退出多activity程序

 activity的启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT。
       1. 如果已经启动了四个Activity:A,B,C和D。在D Activity里,我们要跳到B Activity,同时希望C finish掉,可以在startActivity(intent)里的intent里添加flags标记。这样启动B Activity,就会把D,C都finished掉,如果你的B Activity的启动模式是默认的(multiple),则B Activity会finished掉,再启动一个新的Activity B。这样B Activity就会再创建一个新的了,而是会重用之前的B Activity,同时调用B Activity的onNewIntent()方法。
       2. 如果已经启动了四个Activity:A,B,C和D,在D Activity里,想再启动一个Actvity B,但不变成A,B,C,D,B,而是希望是A,C,D,B,则可以像下面写代码:在一个Activity中,多次调用startActivity()来启动另一个Activity,要想只生成一个Activity实例,方法有两种。


       方法一:设置起动模式
       一个Activity有四种启动模式:standard, singleTop, singleTask, singleInstance。standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。这些启动模式可以在功能清单文件中进行设置,<activity>中的launchMode属性。
       方法二:用FLAG_ACTIVITY_CLEAR_TOP退出整个程序(多activity)
       A的Manifest.xml配置成android:launchMode="singleTop" 原理总结: 一般A是程序的入口点,从D起一个A的activity,加入标识Intent.FLAG_ACTIVITY_CLEAR_TOP这个过程中会把栈中B,C,都清理掉。因为A是android:launchMode="singleTop" 不会调用oncreate(),而是响应onNewIntent()这时候判断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把A finish()掉。栈中A,B,C,D全部被清理。所以整个程序退出了。
       个人补充: 1.可以把A设置成不可见的Acitivity(方法见下面),然后在它的onCreate方法里跳转到“真正”的载入界面 就可以实现在D中点退出程序按钮时看上去立即退出程序的效果 2.A必须是程序启动的第一个Activity才能起到这种立即退出的效果,AG网址平台分析AG95·CC因为Intent.FLAG_ACTIVITY_CLEAR_TOP只会把目标Activity的“上面”的Activity清理掉,而如果目标Activity的“下面”还有Activity(换句话说,目标Activity不在栈底),则finish后只会到他下面的那个Activity,而不是立即退出的效果了 3.不可见Activity 在项目的AndroidManifest.xml文件中相应的Activity标签中添加这样一行: android:theme=”@android :style/Theme.NoDisplay”这样一来,当这个Activity启动的时候,就不会显示出界面了。

http://www.lryc.cn/news/441122.html

相关文章:

  • 克隆centos网卡uuid相同如何修改
  • C语言习题~day11
  • Ansible——Playbook基本功能???
  • 多线程学习篇一:启动多线程的三种方式
  • 【专题】2024跨境出海供应链洞察-更先进供应链报告合集PDF分享(附原数据表)
  • git submodule
  • 【Power Compiler手册】13.UPF多电压设计实现(3)
  • RTX 4090 系列即将停产,RTX 5090 系列蓄势待发
  • 【MySQL】使用C语言连接数据库
  • Vue学习记录之四(watch侦听器和watchEffect高级侦听器)
  • RedisTemplate操作ZSet的API
  • Android 15 正式发布至 AOSP
  • IEEE Electronic Library(IEL)数据库文献检索下载介绍及个人获取IEEE文献途径
  • 动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调
  • 蓝桥杯2024省C
  • C++:内部类,匿名对象,操作符new与delete
  • 【数据结构】排序算法---计数排序
  • mysql时间日期函数、获取当前日期和时间、日期和时间格式化、提取日期部分、日期和时间的算术操作、其他日期函数、日期和时间的比较、日期字符串转换
  • Android开发高频面试题之——kotlin篇
  • 8--SpringBoot原理分析、注解-详解(面试高频提问点)
  • 语言的枚举
  • C# Redis 框架开发技术详解
  • Rust:Result 和 Error
  • Python基础(八)——MySql数据库
  • 统一网关--gateway(仅供自己参考)
  • 【Leetcode152】分割回文串(回溯 | 递归)
  • 基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)
  • 深入探究 Flask 的应用和请求上下文
  • C++学习笔记(30)
  • Rust GUI框架 tauri V2 项目创建