小编ozn*_*cro的帖子

当应用程序不在前台时忽略 NavDeepLinkBuilder 目标

我正在使用 NavDeepLinkBuilder 为推送通知生成挂起的意图,以在特定目的地打开应用程序。

        return NavDeepLinkBuilder(this)
                .setComponentName(MainActivity::class.java)
                .setGraph(R.navigation.main_navigation)
                .setDestination(destinationId)
                .setArguments(args)
                .createPendingIntent()
Run Code Online (Sandbox Code Playgroud)

当应用程序在前台时,通知将导航到 NavDeepLinkBuilder 构建的待处理意图中设置的目的地。

但是,当应用程序不在前台时,通知只会导航到 MainActivity 而忽略在 NavDeepLinkBuilder 中设置的目标。

注意:待处理的意图和通知内置于扩展 FirebaseMessagingService 的服务中。

android android-notifications android-architecture-navigation

8
推荐指数
1
解决办法
1433
查看次数

为什么这个示例应用程序中的存储库类是单例的?

在此示例应用程序中:https : //github.com/googlesamples/android-sunflower

存储库类(PlantRepository.kt、GardenPlantingRepository.kt)是单例的,注入器实用程序对象(InjectorUtils.kt)也是如此。

当注入器实用程序对象已经是一个时,为什么存储库类是单例的?

android android-architecture-components android-jetpack

5
推荐指数
1
解决办法
5109
查看次数

Kotlin:将对象列表转换为对象属性映射

使用以下数据类:

data class Photo(val id: String)
data class Album(val id: String, val photos: List<Photo>)
Run Code Online (Sandbox Code Playgroud)

我希望能够将一个列表Albums变成一个地图Map<photoId, Set<albumId>>

例如:

val albums = listOf(
    Album("1", listOf(
        Photo("1"),
        Photo("2"),
        Photo("3")
    )),
    Album("2", listOf(
        Photo("1"),
        Photo("2")
    ))
)
Run Code Online (Sandbox Code Playgroud)

将转化为:

val map = mapOf(
    Pair("1", setOf("1", "2")),
    Pair("2", setOf("1", "2")),
    Pair("3", setOf("1")
)
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 kotlin 转换函数/lambdas 来做到这一点?例如,groupBy、flatMap?

lambda function kotlin

4
推荐指数
1
解决办法
3067
查看次数