Compose中没有启动模式,怎么办?-教你模拟启动模式

简介: Compose中没有启动模式,怎么办?-教你模拟启动模式

关于设计模式


我们都知道在activity体系中是有多种启动模式的:standard、singleTop、singleInstance、singleTask四种。但是在compose中因为是单activity所以自然是没有启动模式的说法的,因此本文我使用一些NavHostController的一些api来实现启动模式中的效果。


standard


默认的效果就是standard的效果


singleTop


compose中我们可以通过判断顶部的页面是否是我们要启动的singleTop页面来处理。

如果顶部页面是singleTop的页面则直接刷新顶部页面。

判断代码:

/**
 * 判断顶部页面是否刚好是我们要路由的页面
 */
fun sameAsTopPage(controller: NavHostController,dstRoute: String):Boolean{
    val distination = controller.currentDestination?.route ?: ""
    return distination == dstRoute
}
复制代码


singleTask


我们的实现方式,会先判断当前的路由栈中是否存在目标页面,如果存在会直接回退到目标页面,中间页面会自动被销毁

fun toSingleInstance(controller: NavHostController, route: String){
    val findRoute = controller.findDestination(route)
    if (findRoute == null){
        controller.navigate(route)
    }else{
        controller.popBackStack()
        controller.navigate(route)
    }
}
复制代码


singleSinstance


目前我们没有太好的办法实现单例模式,所以这里没有实现。

不过compose中单例的场景也似乎的确也不存在,所以也就没关系了。

git: github.com/ananananzhu…



相关文章
|
Android开发
android Compose中沉浸式设计、导航栏、状态栏的处理
android Compose中沉浸式设计、导航栏、状态栏的处理
2762 0
android Compose中沉浸式设计、导航栏、状态栏的处理
|
数据安全/隐私保护
【鸿蒙软件开发】文本输入(TextInput/TextArea)
【鸿蒙软件开发】文本输入(TextInput/TextArea)
1543 0
|
Cloud Native Linux 虚拟化
如何安装和使用Docker?
如何安装和使用Docker?
467 0
|
缓存 JavaScript 前端开发
SpringBoot——Thymeleaf中的th:inline(内敛文本text、内敛脚本javascript)
SpringBoot——Thymeleaf中的th:inline(内敛文本text、内敛脚本javascript)
2472 0
SpringBoot——Thymeleaf中的th:inline(内敛文本text、内敛脚本javascript)
|
Windows
zlib、libzip、 libzippp 库编译(windows + cmake + vs2013)
"libzipp" 这库是基于 "libzip" 之上封装的,而 "libzip" 又是基于 "zlib"库封装的,所以要编译 "libzipp" 库就要先编译其他两个库。下载准备:"zlib-1.2.
4073 0
|
算法 机器人 测试技术
运用通义灵码有效管理遗留代码:提升代码质量与可维护性
本文首先介绍了遗留代码的概念,并对遗留代码进行了分类。针对不同类型的遗留代码,提供了相应的处理策略。此外,本文重点介绍了通义灵码在维护遗留代码过程中能提供哪些支持。
494 69
|
编解码 搜索推荐 前端开发
字节跳动出大招!IconPark图标库,自定义图标,好用到停不下来!
【11月更文挑战第10天】IconPark 是字节跳动推出的一款高质量图标库,提供超过 2400 个图标,涵盖 32 种分类,支持在线编辑颜色、线条粗细等属性,提供 SVG 和 PNG 格式下载,支持 React、Vue3 等组件代码导出,开源免费商用,适用于网页、移动和桌面应用。
646 4
|
传感器 边缘计算 监控
探索未来网络:物联网技术的革新与挑战
在21世纪的科技浪潮中,物联网(IoT)正迅速成为连接实体世界与数字世界的关键桥梁。本文旨在深入探讨物联网技术的最新进展、面临的主要挑战以及未来的发展趋势。通过分析当前物联网的核心技术,如传感器技术、低功耗广域网(LPWAN)、边缘计算等,本文揭示了这些技术创新如何推动智能城市、智能家居、工业4.0等领域的快速发展。同时,针对数据安全、隐私保护、标准化等关键问题,提出了相应的解决策略和建议。本文最后展望了物联网技术在未来可能带来的社会变革和商业模式创新,强调了跨学科合作的重要性,以实现物联网技术的可持续发展。
|
IDE 程序员 开发工具
IDEA插件-Material Theme UI/IDEA最强主题插件/IDEA图标美化
"Material Theme UI" 是一个用于 JetBrains IDE(如 IntelliJ IDEA、WebStorm、Android Studio 等)的插件,它将原始外观改为 Material Design 风格,并提供丰富的选项来根据个人喜好配置 IDE。
4818 0
IDEA插件-Material Theme UI/IDEA最强主题插件/IDEA图标美化
|
存储 Python
GEE谷歌地球引擎计算每隔8天的遥感影像数据的平均值
【2月更文挑战第5天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,计算长时间序列遥感影像数据在多年中,在每一个指定天数的时间范围内的平均值的方法~
672 7
GEE谷歌地球引擎计算每隔8天的遥感影像数据的平均值