Во многих руководствах предлагается обновить виджет следующим образом:
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
int widgetId = appWidgetIds[i];
Log.d(TAG, " ## onUpdate ## , appWidgetIds.length = "+ String.valueOf(appWidgetIds.length) + " appWidgetId = " + widgetId );
context.startService(new Intent(context, UpdateService.class));
}
}
Однако, хотя на моем домашнем экране есть только один виджет, размер appWidgetIds возвращает 52, и каждый изони пытаются обработать обновление.Это, конечно, вызывает перегрузку вызываемой службы, что в конечном итоге приводит к сбою приложения.
В своем сообщении Костя Васильев предлагает обходной путь для этой ошибки.
Thisдолжно быть довольно распространенной проблемой, но я не мог найти альтернативы этому решению.Как мы можем определить устаревшие виджеты и не пытаться обновить их?
Заранее спасибо.
РЕДАКТИРОВАТЬ: Я только что подумал, что один хороший способ избежать устаревших виджетов - это остановить работающую службу (если она есть) после завершения кода в нем :) Это кажетсячтобы спасти мой день, конечно, это не ответ.