Android 多桌面图标启动, 爬坑点击打开不同页面
备注 :
MainActivity 正常带界面的UI
MainActivityBt 和 MainActivityUsb 是透明的,即 android:theme="@style/TranslucentTheme"
###场景1:只有MainActivity 设置成:android:launchMode="singleTask"
点击顺序:MainActivity > home键 > MainActivityBt > home键 > MainActivityUsb
日志如下:
2024-03-03 21:22:11.724 15131-15131 MultipleIcon pid-15131 D MainActivity.onCreate
2024-03-03 21:22:11.729 15131-15131 MultipleIcon pid-15131 D MainActivity.onStart
2024-03-03 21:22:11.730 15131-15131 MultipleIcon pid-15131 D MainActivity.onResume
---------------------------- PROCESS STARTED (15131) for package com.ifeng.multipleicon ----------------------------
2024-03-03 21:22:14.817 15131-15131 MultipleIcon com.ifeng.multipleicon D MainActivity.onStart
2024-03-03 21:22:14.817 15131-15131 MultipleIcon com.ifeng.multipleicon D MainActivity.onResume
2024-03-03 21:22:17.948 15131-15131 MultipleIcon com.ifeng.multipleicon D MainActivity.onStart
2024-03-03 21:22:17.949 15131-15131 MultipleIcon com.ifeng.multipleicon D MainActivity.onResume
日志简化图: 并没有执行MainActivityBt.onCreate 和 MainActivityUsb.onCreate;而且MainActivity只会执行一次。

###场景2:三个都设置成:android:launchMode="singleTask"
点击顺序:MainActivity > home键 > MainActivityBt > home键 > MainActivityUsb
2024-03-03 21:26:49.050 15690-15690 MultipleIcon pid-15690 D MainActivity.onCreate
2024-03-03 21:26:49.057 15690-15690 MultipleIcon pid-15690 D MainActivity.onStart
2024-03-03 21:26:49.057 15690-15690 MultipleIcon pid-15690 D MainActivity.onResume
---------------------------- PROCESS STARTED (15690) for package com.ifeng.multipleicon ----------------------------
2024-03-03 21:26:52.114 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivityBt.onCreate
2024-03-03 21:26:52.117 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivity.onStart
2024-03-03 21:26:52.136 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivity.onNewIntent
2024-03-03 21:26:52.136 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivity.onResume
2024-03-03 21:26:56.130 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivityUsb.onCreate
2024-03-03 21:26:56.133 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivity.onStart
2024-03-03 21:26:56.143 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivity.onNewIntent
2024-03-03 21:26:56.144 15690-15690 MultipleIcon com.ifeng.multipleicon D MainActivity.onResume
日志简化图: 都有执行MainActivityBt.onCreate 和 MainActivityUsb.onCreate;而且MainActivity也成功跳转了!
!!!注意点:
#1. 多图标入口,需要跳转对应页面,入口Activity需要设置成singleTask, 否则只会唤起现有后台的页面。
#2. 多图标入口,如果是公用一个页面,刷新数据需要在onCreate 和 onNewIntent 中刷新UI。
详细代码:
Manifest配置文件:
<applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MultipleIconApplication"tools:targetApi="31"><activityandroid:name=".MainActivityBt"android:label="BT"android:exported="true"android:launchMode="singleTask"android:theme="@style/TranslucentTheme"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".MainActivityUsb"android:label="USB"android:exported="true"android:launchMode="singleTask"android:theme="@style/TranslucentTheme"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".MainActivity"android:exported="true"android:label="@string/app_name"android:launchMode="singleTask"android:theme="@style/Theme.MultipleIconApplication"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
MainActivity相关刷新UI代码 :
class MainActivity : AppCompatActivity() {private val type : String?get() = intent.getStringExtra("TYPE")// 第一次打开需要在这里刷新override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)Log.d("MultipleIcon", "MainActivity.onCreate")syncTypeDisplay()}override fun onStart() {super.onStart()Log.d("MultipleIcon", "MainActivity.onStart")}// 当非首次进入时,需要在这里刷新override fun onNewIntent(intent: Intent) {super.onNewIntent(intent)// 需要使用setIntent(intent)赋值给当前Activity的Intent.否则,后续的getIntent()都是得到老的Intent。setIntent(intent) syncTypeDisplay()Log.d("MultipleIcon", "MainActivity.onNewIntent")}private fun syncTypeDisplay() {findViewById<TextView>(R.id.tv).text = when(type){"BT" -> {"蓝牙音乐"}"USB" ->{"USB音乐"}else -> {"收音机"}}}override fun onResume() {super.onResume()Log.d("MultipleIcon", "MainActivity.onResume")}
}
相关文章:
Android 多桌面图标启动, 爬坑点击打开不同页面
备注 : MainActivity 正常带界面的UI MainActivityBt 和 MainActivityUsb 是透明的,即 android:theme"style/TranslucentTheme" ###场景1:只有MainActivity 设置成:android:launchMode"singleTask" 点击顺序࿱…...
2024-3-1-网络编程作业
1>操控机械臂: 通过w(红色臂角度增大)s(红色臂角度减小) d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂 源代码: #include <myhead.h> #define minStep 10 //最小偏…...
pytorch基础2-数据集与归一化
专题链接:https://blog.csdn.net/qq_33345365/category_12591348.html 本教程翻译自微软教程:https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/ 初次编辑:2024/3/2;最后编辑:2024/3/2 本教程…...
Python测试框架pytest介绍用法
1、介绍 pytest是python的一种单元测试框架,同自带的unittest测试框架类似,相比于unittest框架使用起来更简洁、效率更高 pip install -U pytest 特点: 1.非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考 2.支持简单的单…...
AI对话系统app开源
支持对接gpt,阿里云,腾讯云 具体看截图 后端环境:PHP7.4MySQL5.6 软件:uniapp 废话不多说直接上抗揍云链接: https://mny.lanzout.com/iKFRY1o1zusf 部署教程请看源码内的【使用教程】文档 欢迎各位转载该帖/源码...
SpringBoot+aop实现主从数据库的读写分离
读写分离的作用是为了缓解写库,也就是主库的压力,但一定要基于数据一致性的原则,就是保证主从库之间的数据一定要一致。如果一个方法涉及到写的逻辑,那么该方法里所有的数据库操作都要走主库。 一、环境部署 数据库:…...
胎神游戏集第二期
延续上一期 一、海岛奇胎 #include<bits/stdc.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> using namespace std; typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD); PROCSETCONSOLEFONT SetCons…...
Unicode/ASCII/UTF的关系(模板字面量、模板字符串、占位符)
字符串:编程时最重要的数据类型之一。 正则表达式:赋予开发者更多操作字符串的能力。 1、 Unicode和ASCII 1.1 概述 Unicode是ASCII字符编码的一个扩展,只不过在Windows中,用两个字节对其进行编码,也称为宽字符集&…...
三、低代码平台-单据配置(单表增删改查)
一、业务效果图 主界面 二、配置过程简介 配置流程:业务表设计 -》业务对象建立-》业务单据配置-》菜单配置。 a、业务表设计 b、业务对象建立 c、业务单据配置 功能路径:低代码开发平台/业务开发配置/单据配置维护 d、菜单配置...
6.1 数据驱动型业务管理方法(3%)
1 数据的产生与应用 1.数据的产生 2.数据的特征 3.数据的应用过程 应用到决策过程中 4.从决策到执行 决策:靠经验来进行决策(80%);可依据数据辅助(20%) 经验比数据重要的多,数据是辅助&…...
JVM学习目录
JVM ✅ JVM运行时内存结构 ✅ JVM常用启动参数 ✅ JVM内存分配与垃圾收集流程 ✅ 什么是垃圾回收机制(Garbage Collection,简称GC) ✅ 如何调用垃圾回收器的方法 ✅ GC如何判定对象已死 ✅ 方法区的垃圾收集 ✅ 垃圾收集算法 ✅ JVM垃圾回…...
使用远程桌面连接工具上传文件到Windows轻量应用服务器时,如何优化文件传输速度?
使用远程桌面连接工具上传文件到Windows轻量应用服务器时,如何优化文件传输速度? 优化网络连接:确保网络连接稳定和畅通,使用有线网络连接代替无线网络,以减少网络延迟和提高文件传输速度。 调整远程桌面设置…...
【Linux】基本指令(下)
🦄个人主页:修修修也 🎏所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 日志 日志的概念: 网络设备、系统及服务程序等,在运作时都会产生一个叫log的事件记录;每一行日志都记载着日期、时间、使用者及动作等相关…...
LeetCode受限条件下可到达节点的数目
题目描述 现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。 给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数组 restr…...
[Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
一、设置应用包名 在Flutter开发中,修改应用程序的包名(也称作Application ID)涉及几个步骤,因为包名是在项目的Android和iOS平台代码中分别配置的。请按照以下步骤操作: 1.Android Flutter工程中全局搜索替换包名 …...
electron-release-server部署electron自动更新服务器记录
目录 一、前言 环境 二、步骤 1、下载上传electron-release-server到服务器 2、宝塔新建node项目网站 3、安装依赖 ①npm install ②安装并配置postgres数据库 ③修改项目配置文件 ④启动项目 ⑤修改postgres的认证方式 ⑥Cannot find where you keep your Bower p…...
贪心(基础算法)--- 区间选点
905. 区间选点 思路 (贪心)O(nlogn) 根据右端点排序 将区间按右端点排序 遍历区间,如果当前区间左端点不包含在前一个区间中,则选取新区间,所选点个数加1,更新当前区间右端点。如果包含,则跳…...
JAVA计算表达式
需求: 1、例如if(score>85){return 1;}else if(score>70){return 2;}else if(score>60){return 3;}else{return 4;}有这一串字符串,要执行这个字符串, 如果score为86分,则能得到1;如果score为30分ÿ…...
【复现】宏景HCM 任意文件读取漏洞_63
目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 宏景HCM 将人才标签技术应用于员工招聘、人才选拔等环节,通过多维度的标签体系,形成不同专业序列的人才画…...
Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)(2)
安装k8有多种方式如: minikube kubeadm 二进制安装 命令行工具 我这里就使用kubeadm进行安装 环境 3台centos7 master ip :192.168.113.120 2G运存 2内核 node1 ip :192.168.113.121 2G运存 2内核 node2 ip :192.168.1…...
从COCO person_keypoints到YOLO格式:一份完整的姿态估计数据集转换脚本与避坑指南
从COCO到YOLO格式:姿态估计数据集转换实战手册在计算机视觉领域,姿态估计任务正从学术研究快速走向工业应用。许多开发者希望利用YOLO系列模型(如YOLOv8-Pose)进行训练,却常常在数据预处理阶段遇到障碍。本文将提供一套…...
ARM ETE跟踪单元与单次比较器控制技术解析
1. ARM ETE跟踪单元的核心机制解析在嵌入式系统调试领域,ARM的嵌入式跟踪扩展(Embedded Trace Extension, ETE)提供了一套完整的指令执行流监控方案。其核心组件跟踪单元(Trace Unit)通过地址比较器(Address Comparator)实现细粒度的执行监控,能够捕获特…...
如何安装OpenClaw?2026年京东云部署及配置Token Plan详细攻略
如何安装OpenClaw?2026年京东云部署及配置Token Plan详细攻略。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流…...
【企业级长文本AI落地红线】:金融/法律/医疗场景中超过64K tokens必踩的4类合规与事实性崩塌风险
更多请点击: https://intelliparadigm.com 第一章:【企业级长文本AI落地红线】:金融/法律/医疗场景中超过64K tokens必踩的4类合规与事实性崩塌风险 在金融、法律与医疗等强监管垂直领域,当AI系统处理超长文档(如IPO招…...
安卓高版本APP抓包失败原因与BurpSuite+雷电模拟器9实战绕过指南
1. 为什么高版本安卓APP抓包变得像拆弹——从Android 7到12的证书信任机制演进你有没有试过把BurpSuite的CA证书拖进雷电模拟器9里,双击安装,弹出“已安装但无法启用”的提示?或者App一启动就报“网络连接异常”,连登录页都打不开…...
如何解锁索尼相机的隐藏功能:OpenMemories-Tweak完整指南
如何解锁索尼相机的隐藏功能:OpenMemories-Tweak完整指南 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak 你是否曾想过,你的索尼相机可能隐藏着更多潜…...
现在不掌握AI视频学习底层逻辑,3个月内将被淘汰:基于LinkedIn人才数据的技能贬值倒计时分析
更多请点击: https://intelliparadigm.com 第一章:AI视频生成工具学习曲线分析 AI视频生成工具的学习曲线呈现出显著的非线性特征——入门门槛看似平缓,但跨越“可用”到“可控”阶段往往遭遇陡峭的认知断崖。初学者常误以为上传文本提示即可…...
【DeepSeek V3技术白皮书级解读】:5大架构跃迁、3倍推理加速与国产大模型自主可控新基准
更多请点击: https://codechina.net 第一章:DeepSeek V3:国产大模型自主可控的新基准 DeepSeek V3 是由深度求索(DeepSeek)自主研发的超大规模语言模型,标志着国产大模型在架构设计、训练范式与工程落地能…...
飞算JavaAI:Java专属AI助手,是“工程提效”还是“新坑”?
先说结论 飞算JavaAI最大的价值是“完整工程生成”,而不是片段补全,适合从零搭建CRUD项目 自定义开发规范功能很实用,但需要投入前期规则编写成本 SQL Chat等附加功能对日常运维有帮助,但智能引导对复杂业务场景可能不够灵活 作…...
矩阵补全与因果推断:评估贸易协定效应的前沿方法与实践
1. 项目概述:当贸易协定遇上因果推断,我们如何看清真实影响?做贸易政策评估这行久了,最头疼的就是“识别”问题。一个贸易协定签了,双边贸易额涨了,你很难说清这增长里有多少是协定本身的功劳,有…...
