Android использует контекст приложения внутри виджета для ожидающих намерений - PullRequest
0 голосов
/ 19 февраля 2011

Кнопка WidgetProvider будет использовать PendingIntent для связи.
Внутри onUpdate(Context ...) метода WidetProvider появляется следующая строка:

PendingIntent buttonPendingIntent = PendingIntent.getBroadcast(context, 0, buttonIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Какой контекст передается виджетомменеджер android?

Можно ли использовать context.getApplicationContext() для PendingIntent?Как я обнаружил, зависание виджета зависит от времени и разных условий приложения, даже если вызывается onUpdate.Использование context.getApplicationContext(), кажется, помогает.

1 Ответ

1 голос
/ 19 февраля 2011

Ваш WidgetProvider.onUpdate() вызывается в результате трансляции AppWidgetManager.ACTION_APPWIDGET_UPDATE.Смотрите источник, строка 52 .

Javadoc из 'BroadcastRerceiver.onReceive () ` говорит:

...you should never perform long-running operations in it...

Итак, проверьтене выполнять никаких длительных задач внутри onUpdate(), так как это может быть причиной зависаний, которые вы испытываете.

...