gpt4 book ai didi

android - Looper 线程上的 CoroutineDispatcher

转载 作者:行者123 更新时间:2023-12-04 23:44:28 26 4
gpt4 key购买 nike

我有一个帮助类,用于在数据库 Realm 做一些工作。如您所知,我们在使用 Realm 时有一些限制,例如:

  • Realm 实例不会在非循环线程上自动刷新。
  • Realm 对象只能在创建它们的线程上访问

  • 我的 Helper 类扩展了 CoroutineScope并提供 CoroutineContext我用了这段代码 Executors.newSingleThreadExecutor().asCoroutineDispatcher()但我的问题是这个 CoroutineScope 上的所有工作正在非循环线程上运行,所以
    如何创建 ExecutorCoroutineDispatcher它在单个弯针线程上运行。
    很明显我不想使用 Dispatchers.Main因为它应该在我的数据库上做作业

    最佳答案

    尽管@Pawel的评论已经解决了OP的问题,但对于可能需要某个代码 fragment 的人来说:

    // prepare a HandlerThread and start it
    val handlerThread = HandlerThread("MyThread")
    handlerThread.start()
    // obtain Handler from the HandlerThread's looper
    val handler = Handler(handlerThread.looper)
    // Now you can get CoroutineDispatcher from the Handler
    val myDispatcher = handler.asCoroutineDispatcher()
    或者很快使用 Scope 函数:
    val myDispatcher = HandlerThread("MyThread")
    .apply { start() }
    .looper.let { Handler(it) }
    .asCoroutineDispatcher()

    关于android - Looper 线程上的 CoroutineDispatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65183494/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com