Compose中模仿Activity启动模式

21 篇文章 5 订阅
17 篇文章 2 订阅

关于启动模式

我们都知道在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中单例的场景也似乎的确也不存在,所以也就没关系了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值