Как избежать обновления устаревших виджетов в Android - PullRequest
1 голос
/ 15 декабря 2010

Во многих руководствах предлагается обновить виджет следующим образом:

    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должно быть довольно распространенной проблемой, но я не мог найти альтернативы этому решению.Как мы можем определить устаревшие виджеты и не пытаться обновить их?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Я только что подумал, что один хороший способ избежать устаревших виджетов - это остановить работающую службу (если она есть) после завершения кода в нем :) Это кажетсячтобы спасти мой день, конечно, это не ответ.

...