从当地服务部门传达进展情况

时间:2010-05-16 18:13:29

标签: android

我正在构建的应用程序使用本地Service将文件从网络下载到手机的SD卡。在这个应用程序中,用户可以浏览书籍列表,并在线阅读。用户还可以下载图书的pdf副本以供离线观看。

要处理下载,我使用的是本地绑定的Service。我不希望这个Service一直运行,只有在下载文件时才会运行。这样Service可以在任务完成后自行关闭,我没有绑定服务,而是通过传递给{{1的Intent发送“enqueue for download”命令}}

可供下载的图书显示在列表中。用户可以通过单击列表中的行来选择下载书籍。在下载时,我需要在实际的图书清单行上使用Context.startService显示下载进度。我还需要在行上显示一本书是否已经入队下载,或者下载是否已完成或失败。例如,书籍可以在整个应用程序中以不同的活动显示 - 在搜索中,或在用户的喜爱书籍列表中。当书籍在不同的地方展示时,这些书籍不是同一个对象,但它们由ProgressBar唯一标识。

因为我不想从每个bookId绑定到服务,我的暂定计划是在Activity类本身上使用public static final HashMap来包含{{1}的映射下载状态,排队,下载,取消等Service。每个书籍视图在显示时将检查此静态HashMap,如果bookId在地图中,则检索并显示其状态。我并不特别喜欢这个想法,但目前我只能想到从服务中检索状态而不必绑定它并启动它。

此外,如果是活动下载,我需要从bookId检索给定enum的下载进度百分比。我再次不想从每个活动绑定到服务,所以我不确定如何从Service检索当前进度。我目前的计划是使用某种单例调解器,bookId将推送更新,并且视图可以从中读取。但我对这个想法并不十分满意。

我想避免绑定到每个Activity的Service的原因是1.)我已经在运行另一个Service和2.)绑定很冗长我想要避免需要传递对Service的引用(但不可否认这不是一个问题)。

也许绑定到本地Service并不足以保证其他设置?我不应该担心每个Service绑定它吗?也许这不是问题?

1 个答案:

答案 0 :(得分:2)

  

我想避免绑定的原因   从每个活动到服务是   1.)我已经在运行另一项服务了

然后考虑将两者结合起来。

  

2。)绑定是冗长的,我想避免需要传递一个   参考服务

每个活动都应该有自己的服务连接。

  

也许绑定到本地服务   不值得保证这一点   其他设置?

绑定到本地服务的行为非常便宜。