Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:设计高效的数据流_Android_Service_Broadcast_Solid Principles - Fatal编程技术网

Android:设计高效的数据流

Android:设计高效的数据流,android,service,broadcast,solid-principles,Android,Service,Broadcast,Solid Principles,我目前正在设计一个应用程序,其中我必须下载一些电影的信息,以便显示下载信息(预告片视频、海报图像、描述…) 我对在应用程序中维护数据以备日后使用的良好设计实践以及如何访问数据感到有点失望 我目前有一个IntentService(MovieService),负责下载电影信息(它作为json存储在远程服务器上) MovieService还负责从设备存储器中读取电影(如果有),并将其保存在磁盘上 因此,它负责所有与电影相关的I/O,但对我来说感觉太多了(也许我错了?) 为了保持应用程序活动的可用信息,

我目前正在设计一个应用程序,其中我必须下载一些电影的信息,以便显示下载信息(预告片视频、海报图像、描述…)

我对在应用程序中维护数据以备日后使用的良好设计实践以及如何访问数据感到有点失望

我目前有一个IntentService(MovieService),负责下载电影信息(它作为json存储在远程服务器上)

MovieService还负责从设备存储器中读取电影(如果有),并将其保存在磁盘上

因此,它负责所有与电影相关的I/O,但对我来说感觉太多了(也许我错了?)

为了保持应用程序活动的可用信息,我有一个包含这些电影的MovieRepository

我的主要问题在这里;当服务下载完电影后,它会将它们放入存储库。然后,如果有任何活动在存储库中注册了自己,它将得到一个事件,表明下载了一些电影,活动可以继续显示它们。但是,当我下载电影时,我想显示进度(在进度条中)以及基本的脱机错误。我使用该服务发送的广播来执行该信息

但我觉得我把这件事弄得太复杂了,我用两种不同的方式传递来自服务的信息。

我曾考虑过使用我的存储库从服务中携带信息,通过添加更多的侦听器回调来表示数据结构中更原子化的事件,但这仍然给我留下了脱机/联机的问题,而这些问题实际上无法从MovieRepository中携带(没有它的位置)

我还考虑将我的服务绑定到调用它的活动,这样我就可以获得所有公开可用的事件,并拥有一个可以维护它的存储库;但它留下了一个问题,即所有活动都需要非常繁重的执行

那么,以一种不会重复的方式设计服务和存储库,并允许我携带所需信息的好方法是什么呢