У меня есть виджет, который при нажатии посылает широковещательную рассылку, которая запускает CountDownTimer, который обновляет мой виджет, а в конце воспроизводит сигнал тревоги. Это прекрасно работает в эмуляторе.Как я могу убедиться, что CountDownTimer тикает и завершает?
На моем телефоне, однако, это совсем другая история. Мой телефон настолько ограничен ресурсами, что мой процесс регулярно убивается, что, конечно же, означает, что CountDownTimer больше не обновляет мой виджет.
Похоже, что единственный способ надежно сделать материал в будущем - использовать AlarmManager, поскольку это устанавливает аварийный сигнал на системном уровне. Однако в документации указано, и я согласен, что вы не должны использовать его для тиков. Однако, поскольку все, что вы, вероятно, будете использовать, имеет возможность быть закрытым произвольно, они не дают нам большого выбора.
Мой вопрос: есть ли способ удостовериться, что CountDownTimer продолжает тикать и, наконец, вызывает onFinish(), или мне нужно просто отказаться от него и переключиться на AlarmManager и «неправильно использовать» его? Также приветствуются любые другие варианты гарантии того, что вещь тикает и заканчивается.
Я должен добавить, что я не могу полагаться на ОС, вызывающий onUpdate(), потому что он будет делать это не быстрее, чем каждые 30 минут, а также потому, что большую часть времени виджет просто ничего не делает. Только когда его щелкают, он гаснет каждую секунду в течение нескольких минут.
Что это будет сделано? –
Службы все еще могут быть убиты. Кроме того, вещь, которая имеет CountDownTimer, не является активностью, это BroadcastReceiver, но, возможно, это не имеет значения. В основном мы будем использовать эту услугу в качестве якоря. Я знаю, что произойдет. Клиенты все равно будут жаловаться, что иногда обратный отсчет не будет работать ... –
На самом деле услуга в сочетании с этим может быть билетом: http://stackoverflow.com/questions/3856767/android-keeping-a-background-service-alive-preventing-process-death –