我需要在从配置活动中按回来后删除主屏幕窗口小部件实例,因为我希望它完全删除,而不是由于issue 2539而留在“边缘”。所以这些修复中的一个很好:
现在是否有可能?
答案 0 :(得分:1)
我自己解决了,只处理了两个布尔标志。 这是我在扩展AppWidgetProvider
的类中所做的public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
SharedPreferences settings = context.getSharedPreferences(SHARED_PREFERENCES, 0);
for(int widgetId:appWidgetIds)
{
boolean configured = settings.getBoolean(CONFIGURED_PREFERENCE+widgetId, false); //In order to skip initial UpdateService
boolean widget= settings.getBoolean(WIDGET_PREFERENCE+widgetId, false);
if(!widget && configured) continue; // In order to skip phantom Widgets update
if(!configured)
{
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(CONFIGURED_PREFERENCE+widgetId, true);
editor.commit();
}
else
{ Intent updateService=new Intent(context, UpdateService.class);
updateService.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,widgetId);
context.startService(updateService);
}
}
}
为了完整的解释,我写了整个程序on my blog