在主屏幕上添加新的appwidget实例时,在某些设备上遇到了奇怪的行为。
我有带有配置 Activity 的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的Samsung Galaxy Note 2(GT-N7100)上,一切正常,但是在带有Android 5.0的Samsung Galaxy Note 3(SM-N900)上,我拥有“幻像” appwidget,而不是真正的appawidget主屏幕,但是当您在屏幕上看不到appwidget时却是“幻影”,而在您的应用程序内部,widget存在ID和常规更新。
我已经在genymotion模拟器(Android 4.3和5.0)上测试了我的应用,但一切都还不错。
请给我建议如何解决这个奇怪的错误。
最佳答案
处理“幻像”小部件是一场噩梦。您可以使用updateAppWidget (ComponentName provider, RemoteViews views)
更新所有实例吗?
根据文档,此方法将设置RemoteView,以供提供的AppWidget提供程序的所有AppWidget实例使用。
AppWidgetManager manager = AppWidgetManager.getInstance(context);
ComponentName component = new ComponentName(context, MyAppWidgetProvider.class);
manager.updateAppWidget(component, remoteViews);
关于android - AppWidget : instance don't be shown after config activity is finished on some devices,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32966184/