首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从app更新widget?

如何从app更新widget?
EN

Stack Overflow用户
提问于 2012-01-08 20:23:35
回答 1查看 382关注 0票数 0

我有一个应用程序下载时间表,并保存它,它也定期下载这个时间表的变化。我目前使用的是单例,但从设计的角度来看,我觉得这很难看。由于需要下载,我需要一个集中式系统来最小化网络使用。

在当前情况下,每个需要从单例进行更新的类都会首先获取该单例的一个实例,然后提供一个接口,当需要更新时会调用该接口的某些方法。目前,单例在工作线程中处理所有的下载。通常我会使用从Activity调用的AsyncTask,但是因为我也必须将结果发送到小部件,所以我看不到这项工作。

另一种选择是使用服务。我会简单地从小部件和活动绑定到它。这种情况下的问题是我不能从BroadcastReceiver ( AppWidgetProvider就是这样)绑定。问题是我不能定期更新我的小部件。

我的问题是:我如何(或者:我可以)设计我的应用程序,使我可以从服务更新我的小部件(以便摆脱单例),或者有更好的方法(也许是BroadcastReceivers)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-08 21:32:42

我如何(或者:我可以)设计我的应用程序,以便我可以从服务更新我的小部件(以便摆脱单例),或者有更好的方法(也许是BroadcastReceivers)?

要更新应用程序小部件,请在AppWidgetManager上调用updateAppWidget()。这可以在任何时候完成,而不仅仅是从AppWidgetProvider

要定期更新应用程序小部件,可以在应用程序小部件元数据中使用android:updatePeriodMillis,也可以直接设置AlarmManager。在任何一种情况下,您都会希望将工作委托给IntentService,因为“下载时间表”是而不是您想在主应用程序线程上执行的操作-- IntentService为您提供了一个后台线程,并在您的工作完成时自动停止,因此您不会占用内存,除非您正在进行工作。

要定期执行一般的工作,请使用AlarmManagerIntentService。作为其工作的一部分,IntentService可以根据需要更新应用程序小部件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8777455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档