应用android代码架构/设计模式时遇到问题

时间:2019-02-04 00:06:28

标签: android design-patterns firebase-cloud-messaging android-room code-structure

我要实现以下目标:

我通过FCM收到了通知,其中数据属性中有特定的id。我的应用程序在前台和在后台/关闭时都得到id。到目前为止,一切都很好。
现在,我要执行以下操作:

  1. 向例如: /books/id获取相应的图书信息。
  2. 将这些信息永久保存在Room database
  3. RecyclerView中显示它们

场景1: 带有RecyclerView的应用位于前台:
通过FCM通知数据收到新的id后,我希望RecyclerView附加另一个列表项以及新获取的图书信息。

场景2: 应用程序处于后台-通知被点击:
单击通知后,将加载带有MainActivity的{​​{1}},并显示新获取的图书信息。

场景3: 应用程序处于后台-通知被清除:
一段时间后,通知被清除,用户重新打开或重新启动应用程序。显示带有RecyclerView的{​​{1}}和新获取的图书信息。

我的问题:
我不太了解如何构建代码来完成此任务。 我尝试在FCM的MainActivity内发出截击请求,但这导致了一个错误,否则我不知道在哪里以及如何去做。我在另一个项目中测试了排球要求,并在那儿工作了。 目前,我尝试学习如何使用Room数据库。

如果有人能给我关于如何完成类似目标的见解,我将不胜感激。我真的需要尽快解决这个问题。

先谢谢! :)


编辑1: 我再也没有在RecyclerView内部出现错误了。我收到给定书onMessageReceived()的正确答复。
现在,我要将这些信息保存到onMessageReceived中,并在我的id中反映所做的更改。我想我将像这样使用android Room database
android architecture components example

我认为这正是我所需要的。但是,我仍然不太了解如何处理它并相应地构建代码。

1 个答案:

答案 0 :(得分:0)

场景1:您可以将其保存在数据库中,或者只是广播并将其保存在“活动”中,然后显示一个列表。

方案2:您应将所有显示数据保留在数据库中。当RecyclerView 处于后台时,单击通知后,您应该处理通过android.intent.category.LAUNCHER的intent-filter的intent,并在其中放置一些信息以进行请求并更新列表。

场景3:最后,只需提出一个请求,保存在DB中,然后在列表中显示所有内容。这是一个很好的方法,它需要花费额外的时间,但是您始终将其更新。

还请阅读有关DiffUtils的高效热插拔数据