从主屏幕删除我的最后一个 appWidget 实例后onDisabled
,onEnabled
无法正常工作。
我将我的小部件注册为广播接收器,主屏幕上没有实例,但广播接收,而且我看到我的日志写在我的 appWidget 核心类中!
卸载我的应用程序并再次安装后,问题解决了,并且onDisabled
在onEnabled
添加(删除)第一个(最后一个)实例后正常工作。
我手动收集了 appWidgetIds 并将其保存在一个文件中,以提供一些更好的方式来访问我所有的小部件 ID,但隐藏的 appWidget 并未从我收集的小部件 ID 中删除,并且还存在于主屏幕中!
问题:
问题是 Android 版本 2.3.4(测试设备)上的错误吗?在这种情况下,解决方案是什么?
代码的重要部分:
@Override
public void onEnabled(Context context) {
G.logger.out("Enabled");
super.onEnabled(context);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
G.logger.out("Disabled");
File file = new File(G.infoDir + "/" + getClass().getSimpleName() + ".dat");
if (file.exists()) {
file.delete();
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
WidgetProperty property = G.widgetPropertyMap.get(getClass().getSimpleName());
property.appWidgetIds = appWidgetIds;
addWidgetIds(appWidgetIds, getClass().getSimpleName()); // add widget ids to a file ( duplicates will skip )
updateAll(getClass(), context);
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
G.logger.out("Deleted");
removeWidgetIds(appWidgetIds, getClass().getSimpleName()); // remove widget ids from file
}