Идентификаторы Appwidget, но без виджетов - PullRequest
3 голосов
/ 07 июля 2011

В настоящее время я работаю над созданием некоторых приложений для моего приложения;одним из них является виджет, содержащий часы, которые требуют обновления каждые 60 секунд.Поэтому я создаю сигнал тревоги в функции onEnabled () AppWidgetProvider, которая отправляет намерение обновления часов каждые 60 секунд, которое получает appwidgetprovider;это работает как талисман, однако я хотел бы избавиться от таймера, когда больше нет виджетов с часами, так как мне нравится держать вещи в порядке.Поэтому я удаляю сигнал тревоги в функции onDisabled () AppWidgetProvider, так как он вызывается при удалении последнего типа виджета.

Однако проблема в том, что даже когда я удаляю последний из виджетов, в appwidgetmanager все еще остаются виджеты, и, следовательно, onDisabled () никогда не вызывается.Я попытался перезагрузить устройство, но они, кажется, сохраняются.

Это обычное поведение, и я не должен полагаться на вызываемый onDisabled (), это ошибка, или я делаю что-то ужасно неправильно?

1 Ответ

1 голос
/ 12 июля 2011

До и включая виджеты Android 1.6, которые не могут быть добавлены на домашний экран, все еще находятся в списке. Я называю их «призрачными виджетами». Они создаются, когда вы пытаетесь добавить виджет, но недостаточно места, и вы получите сообщение об этом. Но виджет как-то все же попадает во внутренний список. Я думаю, что это должно было быть исправлено с 2.0, но я не уверен.

В дополнение к этому, использование only onEnabled и onDisabled - очень плохая идея для ваших целей. Даже когда экран выключен, ваши виджеты будут обновляться. Ваше устройство никогда не будет спать, а батарея разряжается слишком быстро. По крайней мере, добавьте приемник для ScreenOn и ScreenOff!

...