在主屏幕上添加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 on主屏幕,但“幽灵”,当你在屏幕上看不到appwidget但在你的应用程序appwidget内存在ID和定期更新.
我已经在genymotion模拟器(Android 4.3和5.0)上测试了我的应用程序,但一切都很好.
解决方法
处理“幻影”小部件这是一场噩梦.您可以使用updateAppWidget(ComponentName提供程序,RemoteViews视图)更新所有实例吗?
根据文档,此方法将设置RemoteViews用于所提供的AppWidget提供程序的所有AppWidget实例.
根据文档,此方法将设置RemoteViews用于所提供的AppWidget提供程序的所有AppWidget实例.
AppWidgetManager manager = AppWidgetManager.getInstance(context); ComponentName component = new ComponentName(context,MyAppWidgetProvider.class); manager.updateAppWidget(component,remoteViews);