我正在构建的应用程序使用本地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
绑定它吗?也许这不是问题?
答案 0 :(得分:2)
我想避免绑定的原因 从每个活动到服务是 1.)我已经在运行另一项服务了
然后考虑将两者结合起来。
2。)绑定是冗长的,我想避免需要传递一个 参考服务
每个活动都应该有自己的服务连接。
也许绑定到本地服务 不值得保证这一点 其他设置?
绑定到本地服务的行为非常便宜。