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…



相关文章
|
7月前
|
存储 Linux 芯片
【启动】芯片启动过程全解析
【启动】芯片启动过程全解析
161 0
|
7月前
|
存储 安全 C++
UEFI vs Legacy:深入理解两种启动模式的区别
UEFI vs Legacy:深入理解两种启动模式的区别
1926 0
|
网络协议 安全 Linux
2.2.3开机流程中的BIOS与UEFI开机检测程序
2.2.3开机流程中的BIOS与UEFI开机检测程序
155 0
2.2.3开机流程中的BIOS与UEFI开机检测程序
|
监控 Linux Shell
Linux应用程序重启:优雅实现应用程序的自动重启
在Linux服务器运行应用程序时,如果应用程序出现崩溃或异常终止,为保证服务的可靠性,自动重启是一种常见的应对措施。本文将介绍Linux下实现应用程序自动重启的方法,并提供代码实现例子,帮助读者优雅地处理应用程序的崩溃和重启。
3330 0
|
存储 Android开发
Activity的启动模式和启动流程
标准模式(standard) 栈顶复用模式(singleTop) 栈内复用模式(singleTask) 单例模式(singleInstance) 启动模式可在AndroidManifest.xml中,通过<activity>标签的android:launchMode属性设置。
|
运维 监控 安全
精简系统服务和开机进程| 学习笔记
快速学习精简系统服务和开机进程。
|
运维 监控 安全
精简系统服务和开机进程
一、线上服务器建议开启的服务 二、可删除的系统用户和组 三、下期公开课预告 四、广而告之
在虚拟机上EFI启动模式安装WIN10
工具:虚拟机(vmware12),WIN10原版(msdn上下载的) 安装步骤:   前面虚拟机设置的图没截好,就不放了,基本都一样的,老版本的vmware可能没有WIN10选项,选WIN7应该也是可以的。
3643 0