0

我已经阅读了有关 App Widgets 的开发人员指南,并且我了解到为避免 ANR 错误,您应该在AppWidgetProvider的onUpdate方法中启动服务以更新小部件......我对此类服务有疑问:何时我们开发标准服务,可以从一个活动开始,我们应该避免在onStartCommand中计算太长,因为onStartCommand方法在主 UI 线程中运行。所以,我们是否应该避免在由启动的服务的onStartCommand中进行长时间计算AppWidgetProvider还是在这种情况下我们不会冒险阻止 UI?如果我们必须避免在onStartCommand中进行长时间计算同样在这种情况下,我们可以在服务中启动工作线程,还是使用 Intent 服务?在这种情况下,我们可以使用AppWidgetManager的updateAppWidget方法从我们想要的任何线程更新小部件,还是冒着从 UI 线程外部更新 UI 的风险?

我希望问题很清楚..

4

1 回答 1

1

您可以从 onUpdate 启动 Intent 服务,然后像往常一样使用 AppWidgetManager 从服务更新小部件。这并不意味着您要在 UI 线程之外更新 UI。即使您从 onUpdate 更新小部件,您使用的是 RemoteViews 和 AppWidgetManager,您也不会直接更新 UI。AppWidgetManager 实际上调用了一个内部的 Android 服务来更新小部件,所以你不需要担心它。

我认为小部件的 UI 线程在启动器中,但我不确定。在任何情况下,小部件的代码都不会在那个线程上运行,这就是我们有 RemoteViews 的原因。

于 2012-06-11T20:22:05.593 回答