在主屏幕上添加appwidget的新实例时,我在某些设备上遇到了奇怪的行为。
我有配置活动的AppWidget应用程序。正如在appwidget的教程更新中所说,我必须自己做。
public static void updateWidgetAndSendIntent (Activity activity, int mAppWidgetId, boolean isUpdate) {
updateWidgets(activity);
if (!isUpdate) {
Intent resultIntent = new Intent();
resultIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
activity.setResult(Activity.RESULT_OK, resultIntent);
activity.finish();
}
}
public static void updateWidgets(Context context) {
new ManagerUpdateWidget(context).updateAllWidgetInstances();
}
ManagerUpdateWidget.java
public void updateAllWidgetInstances() {
Bitmap widget = getCustomView(context);
for (int widgetId : appWidgetIds) {
updateCurrentInstance(widgetId, widget);
}
}
事实上,搭载Android 4.4.2的三星Galaxy Note 2(GT-N7100)一切都还可以,但是在搭载Android 5.0的三星Galaxy Note 3(SM-N900)上我有“幻影”appwidget,而不是主屏幕上的真正的appawidget,但是当你在屏幕上看不到appwidget但是你的app appwidget里面存在ID和定期更新的“幽灵”时。 我已经在genymotion模拟器(Android 4.3和5.0)上测试了我的应用程序,但一切都很好。
请建议我如何解决这个奇怪的错误。
答案 0 :(得分:0)
处理"幻像"小部件它是一场噩梦。您可以使用updateAppWidget (ComponentName provider, RemoteViews views)
更新所有实例吗?
根据文档,此方法将设置RemoteViews用于所提供的AppWidget提供程序的所有AppWidget实例。
AppWidgetManager manager = AppWidgetManager.getInstance(context);
ComponentName component = new ComponentName(context, MyAppWidgetProvider.class);
manager.updateAppWidget(component, remoteViews);