我有一个下载时间表并保存的应用程序,它还定期下载更改到此时间表。我目前正在使用单身人士,但从设计角度来看,我觉得这很难看。由于下载,我需要一个集中式系统来最小化网络使用。
在当前情况下,每个需要单例更新的类首先获取此单例的实例,然后提供一个接口,在需要更新时调用某些方法。目前,单例处理工作线程中的所有下载。通常我会使用从Activity调用的AsyncTask,但是因为我必须将结果发送到小部件,所以我看不到这个工作。
替代方案是使用服务。我只是从小部件和活动绑定到它。在这种情况下的问题是我无法从BroadcastReceiver(AppWidgetProvider是)绑定。问题是我无法定期更新我的小部件。
我的问题是:我怎么能(或者我可以)设计我的应用程序,以便我可以从服务更新我的小部件(为了摆脱单例)或者有更好的方法(也许) BroadcastReceivers)?
答案 0 :(得分:1)
我怎么能(或者我可以)设计我的应用程序,以便我可以从服务更新我的小部件(为了摆脱单例)或者有更好的方法(也许是BroadcastReceivers)?< / p>
要更新应用小部件,请在updateAppWidget()
上致电AppWidgetManager
。这可以在任何时候完成,而不仅仅是AppWidgetProvider
。
要定期更新应用小部件,请在应用小部件元数据中使用android:updatePeriodMillis
,或直接自行设置AlarmManager
。在任何一种情况下,您都希望将工作委托给IntentService
,因为“下载时间表”不您希望在主应用程序线程上执行某些操作 - {{1}为你提供了一个后台线程,并在你的工作完成后自动停止,所以除非你正在积极地工作,否则你不会占用RAM。
要定期开展一般工作,请使用IntentService
和AlarmManager
。作为其工作的一部分,IntentService
可以根据需要更新应用小部件。