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…



相关文章
|
5月前
|
存储 安全 C++
UEFI vs Legacy:深入理解两种启动模式的区别
UEFI vs Legacy:深入理解两种启动模式的区别
1518 0
|
6月前
|
Java Linux Android开发
Android系统的启动流程
Android系统的启动流程
46 1
|
6月前
|
Docker 容器
docker 常用指令(启动,关闭,查看运行状态)
docker 常用指令(启动,关闭,查看运行状态)
86 1
|
存储 Android开发
Activity的启动模式和启动流程
标准模式(standard) 栈顶复用模式(singleTop) 栈内复用模式(singleTask) 单例模式(singleInstance) 启动模式可在AndroidManifest.xml中,通过<activity>标签的android:launchMode属性设置。
|
存储 安全 Java
Android系统启动流程
今天说《Android体系架构》第一篇内容,关于Android系统启动的过程。
206 0
Android系统启动流程
|
Android开发
【Android 应用开发】Android 返回堆栈管理 ( 默认启动模式 | 栈顶复用启动模式 | 栈内复用启动模式 | 单实例启动模式 | CLEAR_TOP 标识 )
【Android 应用开发】Android 返回堆栈管理 ( 默认启动模式 | 栈顶复用启动模式 | 栈内复用启动模式 | 单实例启动模式 | CLEAR_TOP 标识 )
216 0
|
Android开发 数据格式 XML