我目前正在设计一个应用程序,我必须下载有关某些电影的信息才能显示下载信息(预告片视频,海报图片,说明......)。
我对在应用程序中维护数据以供以后使用以及如何访问它的良好设计实践感到有点沮丧。
我目前有一个IntentService(MovieService)负责下载电影信息(它作为json存储在远程服务器上)。
MovieService还负责从设备存储中读取电影(如果存在)并将其保留在磁盘上。
因此它负责所有与电影相关的I / O,但对我来说感觉太多了(也许我错了?)
为了保持我的应用程序活动的可用信息,我有一个包含这些电影的MovieRepository。
我的主要问题来自这里;当服务完成下载电影时,它会将它们放入存储库中。然后,如果任何活动在存储库中注册了自己,它将获得一个事件,说明某些电影已经下载并且活动可以继续显示它们。但是当我下载电影时,我希望显示进度(在进度条中)以及基本的脱机错误。我使用从服务发送的广播来传送信息。
但我觉得我太复杂了,我以两种不同的方式传递来自服务的信息。
我考虑过使用我的存储库从服务中传递信息,通过添加更多的侦听器回调来代表数据结构上更像原子的事件,但它仍然让我遇到离线/在线问题,这可能是'实际上是从MovieRepository传播的(没有它在那里)。
我还想过将我的服务绑定到调用它的活动上,这样我就可以获得所有可公开发布的事件,并且还有一个可以维护它的存储库;但它留下了在所有活动中实施非常繁重的问题。
那么,以一种不会多余的方式设计服务和存储库的好方法是什么,并且允许我提供我需要的信息