Android应用程序小部件在更新时有奇怪的视图故障

时间:2016-03-24 21:15:11

标签: android android-appwidget appwidgetprovider

我正在开发小型应用程序小部件,并且在更新远程视图方面存在一些问题。通过系统调用更新小部件时,一切正常,但是当我通过此代码尝试从我的服务更新小部件时:

AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
ComponentName widgetComponent = new ComponentName(this, NBRBAppWidget.class);
int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
Intent update = new Intent();
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
sendBroadcast(update);

我的小部件视图故障。毛刺的例子在下面的视频中

Video of RemoteView glitches

我检查了更新视图方法耗时7-20毫秒

如果有人假设为什么会发生这种情况,请告诉我。

1 个答案:

答案 0 :(得分:0)

为了避免小部件出现故障,我只需删除ACTION_APPWIDGET_UPDATE广播的发送并调用RemoteView而不是它,如下所示:

AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
ComponentName widgetComponent = new ComponentName(this, NBRBAppWidget.class);
int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
for (int i = 0; i < widgetIds.length; i++) {
    NBRBAppWidget.updateWidget(this, widgetManager, widgetIds[i]);
}

NBRBAppWidget.updateWidget是调用远程视图的方法