当前位置: 首页 > 知识库问答 >
问题:

Android WorkManager获取对工人类的引用

邵畅
2023-03-14

我面临以下问题:我的类继承了CoroutineWorker。这个工作器的逻辑足够复杂,事实上doWork()调用了里面的一堆其他例程并捕获(收集)几个StateFlow的结果,例如:

   override suspend fun doWork(): Result {
      //blah-blah
        withContext(Dispatchers.Default) {
            _scanResultState.collectLatest {
                //blah-blah
            }
        }
      return ...
   }

问题:

  1. 我可以以某种方式将收集的StateFlow值(值是简单的原始对象)返回/放置给Worker。结果
  2. 或者作为一种选择-我如何在其他类中收听/收集这些StateFlow-在我的Worker之外?

因为,WorkManager实例化的工人类-我无法引用工人的具体实例。E、 g.在服务中,我可以通过绑定服务引用实例,但在WorkManager的情况下,这似乎是不可能的。

有什么想法吗?


共有1个答案

商兴朝
2023-03-14

好吧,如果您想将一个流从您的Worker类共享到您的应用程序,您可以为此使用房间数据库,例如,假设您想共享一个流

  1. 首先在您的房间数据库中创建一个Book Entity
  2. 其次在中添加一个返回Flow的函数

通过这4个步骤,您将能够从任何其他类的Worker收集数据。

我希望我的回答是清晰和有帮助的: D

 类似资料:
  • 问题内容: 我有一个扩展的打字稿类: 然后是一个地方,我必须手动创建一个实例并将其附加到DOM: 由于系统的体系结构限制,我需要为该组件存储对我的类实例的引用以供以后使用,问题是我在创建的元素中找不到对我的类实例的任何引用,它只有一个引用通过财产上课。 只允许我提供类,而不喜欢手动实例化的对象。 为了实例化自定义组件,将其附加到DOM并获取对组件类实例的引用,我应该怎么做? 问题答案: 您有几种选

  • 让我从一句来自1950年的引言开始吧。当时的世界是个简单得多的地方。电视是黑白的。喷气式飞机尚未进入民用领域。硅晶体管还没发明问世。全世界一共只有十来台电脑。每台都是满满当当的真空管、继电器、插接板和电容器的华丽组合,能塞满整个房间。 因此,只有一个胆量十足的人才敢预测说:我相信,到了20世纪末,语言的用法和受过教育者的普遍观点将会出现重大转变,人可以说 机器在思考,且不认为这自相矛盾。多么大胆的

  • 创建部门表 到目前为止,我已经收到了下面的查询,我无法得到该部门工作的员工人数。我怎么能那么做?

  • 问题内容: 如果知道与该线程关联的ID,该如何获取正在运行的线程的引用? 例如 问题答案: 您有2种方法可以做到。两者都很简单: 旧方法:获取您可以循环访问..getParent()的根线程组。并打电话 较新(但速度较慢)。 第一种方法有一个小问题,由于存在错误,ThreadGroup可能根本无法枚举任何东西。 第二个比较慢,但是有安全漏洞。

  • 我有一个预定的执行者服务,我要求在预定任务后返回期货。Javadoc说在调度任务后返回ScheduledFuture—但是,如何获得尚未运行任务的后续未来? 我的调用如下所示:exec.scheduleAtFixed速率(新任务(),0,间隔,时间单位。分钟); 新任务确实已提交并运行,但我只有第一次打电话时才有未来。这个未来是可重用的还是可重用的?

  • 我已经研究了几个小时如何做到这一点,但遇到了砖墙。我有一个PDF文件,其中一个对象是一个北箭头。它是一个简单的线条图形(我相信它们在Acrobat中被称为图形标记),将指示哪种方式是“向上”。我想读一下那条线图形,确定它的旋转。我采取的第一步是看看是否可以用以下代码枚举PDF的内容: 我是在走正确的道路,还是有不同的方法来获取对图形标记的引用?