我正在开发小型应用程序小部件,并且在更新远程视图方面存在一些问题。通过系统调用更新小部件时,一切正常,但是当我通过此代码尝试从我的服务更新小部件时:
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);
我的小部件视图故障。毛刺的例子在下面的视频中
我检查了更新视图方法耗时7-20毫秒
如果有人假设为什么会发生这种情况,请告诉我。
答案 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是调用远程视图的方法