Выполнять задачу в фоновом режиме при запуске приложения и навсегда - Android

В моем приложении должна быть одна (асинхронная) задача, которая всегда является сетевой операцией и в первый раз также запросом к базе данных.

Его необходимо выполнять с определенным интервалом времени, который не является фиксированным (может быть 1 минута, 1 час или что-то среднее между ними), а также когда приложение не активно.

Какое лучшее и самое простое решение в таком случае между Asynctask/Thread/Service/Alarm/ничего не упомянуто.


person eeadev    schedule 12.08.2014    source источник


Ответы (1)


Для этого вам нужна служба, а не AsyncTask:

http://www.vogella.com/tutorials/AndroidServices/article.html

Службы сохраняются даже после закрытия действий. Однако будьте осторожны: разрядка батареи разозлит ваших пользователей. Кроме того, службы могут быть уничтожены при нехватке памяти, поэтому будьте осторожны.

Планирование задачи для запуска в будущем должно использовать AlarmManager. Выполнение операции должно выполняться в службе, поскольку вы указываете, что иногда это будет происходить, когда приложение неактивно.

Вы также можете использовать TimerTask, но он немного больше разряжает батарею и не так точен, как AlarmManager. Вы также можете использовать обработчик для postAtTime

Вот хорошая ссылка:

разница между таймером и диспетчером тревог

и еще один:

Что лучше в Android? Таймер или будильник?

Это действительно зависит от частоты и варианта использования. Я использовал все это — я рассматриваю TimerTasks как «продолжать часто проверять в течение короткого времени» по сравнению с обработчиками для «проверять снова через некоторое время» по сравнению с AlarmManager для «я хочу продолжать проверять каждый час в течение длительного времени».

person Jim    schedule 12.08.2014
comment
Почему не AlarmManager? - person eeadev; 13.08.2014
comment
Чтобы запланировать свое обслуживание, я использую таймер, что-то не так? - person eeadev; 13.08.2014
comment
Я снова отредактировал ответ, потому что это действительно зависит от того, как вы его используете. - person Jim; 13.08.2014