我正在基于选项卡式活动构建应用程序。在任何时候都有大约12个选项卡。TabActivity中的“sub”活动是否应该绑定服务?
我已经构建了一个下载服务,供我自己使用,它需要绑定到它。我发现了一些关于从标签中绑定服务的问题,但我还没有找到任何讨论设计这个问题的最佳方法。
我的路径似乎是:
- 绑定使用的getParent()或getApplicationContext()作为上下文选项卡的活动的下载服务绑定到。
- 在TabActivity中绑定下载服务一次,然后通过静态方法将其暴露给组成选项卡的其他活动。
- 重新设计下载服务,使其不需要绑定。 (我不太确定这是一个可行的选择或买我很多)
我基本上在1和2之间折腾。似乎#1似乎使活动更独立,但我不确定是否会导致标签“子”活动在选项卡活动的上下文中绑定相同服务12次的问题。同样,我不确定是否通过静态方法将状态依赖对象(如服务)公开给其他活动是一种好的做法。我担心它可能会产生一些需要考虑的竞争条件,具体取决于绑定发生的时间和标签活动的开始时间。
什么看起来更好的设计?
“下载”服务如何工作?它是否经常在后台执行任务,或者只有在其中一项活动请求时才会尝试进行“按需下载”? – Squonk 2011-06-09 18:51:06
@MisterSquonk它是异步的。当提交下载时,它会进行下载,然后通过回调通知请求的代码。它只有在一段代码请求下载并且执行器服务设置同时运行多达3次下载时才起作用。它还使用md5查找缓存下载,以减少远程资源被拉到设备的次数。 – 2011-06-09 19:01:00