如何解决如何在后台任务中正确使用Android Room与UI无关
目前,Room与DB到UI的集成工作良好:
Dao用于数据库操作
用于与Daos交互并将数据缓存到内存中的存储库
但是,出现另一种情况,我很难理解如何正确实施会议室使用情况。
我有一个纯粹是静态的网络API,它是服务器REST体系结构的反映。
有一个解析器方法,它遍历URL结构,并通过反射将其转换为现有的API,并调用他找到的任何最终方法。
在此API中,每个REST操作均由等效的REST命名结构类下的方法表示,即:
REST中的/ contacts等同于API中的Class Contacts.java
其余的POST,GET,DELETE等同于相应类中的方法
示例:
public class Contacts {
public static void POST() {
// operations are conducted here
}
}
这是我的难处;我应该如何正确/正确地将ROOM集成到该POST方法中?
目前,我有一个临时解决方案,用于实例化我需要将数据插入并使用它的存储库,但是每次调用该方法时,这种情况都是一次性的,因为这里绝对没有生命周期,也不存在一种具有足够粒度的方法值得进行的工作(我不知道我需要在API内建立一个存储库多长时间才能证明将其缓存X倍的时间)。
我目前正在工作的示例:
public class Contacts {
public static void POST(Context context,List<Object> list) {
new ContactRepository(context).addContacts(list);
}
}
或者将其作为单例使用:
public class Contacts {
public static void POST(Context context,List<Object> list) {
ContactRepository.getInstance(context).addContacts(list);
}
}
在存在生命周期的情况下,所有与View相关的Room交互都可以很好地工作,但是在这种情况下,我不知道如何正确执行此操作。这些不只是视图可能会调用网络请求的情况-然后我只使用networkboundrequest或类似的方法-这也可以是服务器发送的数据,而应用程序从未请求过,例如用户启动应用程序相关数据的更新与您进行对话-该应用无法得知,因此它首先来自服务器。
如何正确实施?我没有找到有关这种情况的任何指南,恐怕我做错了。
编辑:根据所使用的标签和提供的示例,该项目不是Kotlin,因此请提供不依赖于迁移到Kotlin以使用其协程或类似Kotlin功能的任何解决方案。
解决方法
似乎就像我已经在使用的Singleton模式一样。似乎没有可用于这种简单情况的文档。因此,这基本上是一个猜谜游戏。不管是不好的做法还是有任何内存泄漏的风险,我都不知道,因为同样,也没有文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。