1
從主屏幕刪除我最後一個appWidget實例後,onDisabled
,onEnabled
無法正常工作。爲什麼在主屏幕上有一個隱藏的appWidget?
我註冊我的小部件作爲廣播接收器,沒有主屏幕上的實例,但廣播收到,我也看到我的日誌寫在我的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
}
不錯!沒有答案! – Behnam