小编vov*_*ost的帖子

如何修改 Kotlin Flow uniqueUntilChanged 以添加到期时间

我如何使用它并为其添加过期时间,这意味着如果流中存在相同的值,我们仍然会收集它,因为在发出前一个重复值之后distinctUntilChanged()它的时间超过了毫秒。expiry

flow { 
  emit("A")    // printed
  emit("B")    // printed
  emit("A")    // printed
  emit("A")    // NOT printed because duplicate
  delay(5000)
  emit("A")    // printed because 5 seconds elapsed which is more than expiry
}
  .distinctUntilChanged(expiry = 2000)
  .collect {
    println(it)
  }
Run Code Online (Sandbox Code Playgroud)

我想打印这个:

A
B
A
A
Run Code Online (Sandbox Code Playgroud)

这是测试它的代码:

  @Test
  fun `distinctUntilChanged works as expected`(): Unit = runBlocking {
    flow {
      emit("A")    // printed
      emit("B")    // printed
      emit("A")    // printed
      emit("A")    // NOT printed because duplicate
      delay(5000)
      emit("A")    // printed because …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines kotlin-flow

3
推荐指数
1
解决办法
708
查看次数

FrameLayout中的layout_gravity错误

Eclipse给了我:
error:Error:不允许字符串类型(在'layout_gravity'中,值为'center_vertical | right').

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical | right"
        android:src="@android:drawable/ic_menu_camera" />
Run Code Online (Sandbox Code Playgroud)

当我切换到图形布局时,它就像我预期的那样.
android:minSdkVersion="10"

xml android android-layout

2
推荐指数
1
解决办法
1146
查看次数

在Android工作室组织资源

我正在开发一个包含大量.xml布局文件的项目.我想在单独的文件夹中组织它们.似乎资源合并将是正确的解决方案.
http://tools.android.com/tech-docs/new-build-system/resource-merging
我想在活动,列表视图,对话框,按钮等中拆分布局文件夹.

如何修改项目和构建. gradle文件来完成这个?

android android-studio

2
推荐指数
1
解决办法
1489
查看次数

Eclipse导入现有的android项目

我有来自Google培训课程的http://developer.android.com/shareables/training/Animations.zip演示项目.当我在Eclipse中导入它时:导入>现有Android代码进入工作区在此输入图像描述

如果我创建一个新项目,我会看到同样的事情:现有代码中的文件>新建>项目> Android项目也许有其他方法可以导入项目.

java eclipse android

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

具有socket.io的Google Cloud Functions

我的理解是,要使用socket.io建立持久的套接字连接,Node.js服务器应始终处于运行状态。使用Google Cloud Functions时,并不总是运行Node.js服务器,因此无法保持套接字连接处于活动状态。

在运行中的Node.js服务器上运行Cloud Run是使用socket.io处理多个套接字连接的最佳选择吗?

node.js socket.io google-cloud-functions google-cloud-run

1
推荐指数
2
解决办法
421
查看次数

本地函数不更新 Compose 中的引用值

假设父宽度为200.

当我最初运行它时,它会打印:

current maxWidth: 200
Run Code Online (Sandbox Code Playgroud)

然后,我将父级宽度增加到600并在重新组合后打印:

current maxWidth: 600
Run Code Online (Sandbox Code Playgroud)

在我点击框后,本地函数onTap被调用并打印旧值:

onTap maxWidth: 200
Run Code Online (Sandbox Code Playgroud)

发生的情况是onTap捕获该constraints.maxWidth值并且稍后不会更新它。有什么办法可以获取里面的当前值onTap吗?

  BoxWithConstraints(
    propagateMinConstraints = true,
    modifier = Modifier
      .background(Color.Green)
      .fillMaxSize()
  ) {
    println("current maxWidth: ${constraints.maxWidth}")

    fun onTap(position: Offset) {
      println("onTap maxWidth: ${constraints.maxWidth}")
    }

    Box(
      modifier = Modifier
        .background(Color.Blue)
        .pointerInput(Unit) {
          detectTapGestures(onTap = ::onTap)
        }
    ) {

    }
  }
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

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