Intereting Posts
Получение кодеров QualComm для работы через API MediaCodec Изменение разрыва ящика между группой заголовков и меню первого элемента Официальные значки Android для XXHDPI и XXXHDPI Как создать необработанный файл жестов Android Сделать строку кликабельной, подчеркнутую в TextView Пользовательский шрифт в Android отличается по-разному в разных API Каковы правильные настройки манифеста Android для приложения Adobe AIR для ограничения доступности устройства? Как узнать, сколько общих предпочтений в общих предпочтениях в android Создание простого приложения напоминания в Android Комментировать ярлык Android Studio Android: Как сохранить рамку предварительного просмотра в виде jpeg-изображения? Безопасное удаление активности Android Загрузка двоичного файла с помощью okhttp из ресурсов Диалоговое окно Datepicker без визуализации календаря в режиме lollipop ? Что может привести к тому, что элемент <p> не будет охватывать полную ширину в браузере Android

Периодичность выполнения задачи (один раз в день / один раз в неделю)

Я хочу периодически запускать некоторую задачу (например, получать страницу новостей на веб-сайте) (один раз в неделю / день), даже если мое приложение закрыто. Является ли это возможным?

Solutions Collecting From Web of "Периодичность выполнения задачи (один раз в день / один раз в неделю)"

Да, вам нужно посмотреть на AlarmManager, чтобы настроить повторный «Тревога». Это лучше для работы от батареи на устройстве, так как в отличие от обслуживания, он не работает постоянно в фоновом режиме. Тревога запускает широковещательный приемник, который будет выполнять ваш собственный код.

В качестве заключительного примечания – есть значения перечисления для времени тревоги, включая ежедневный, половинный день и многое другое, хотя вы можете просто установить фактическое значение.

Хороший пример можно найти в следующей публикации:

Пример диспетчера аварий

Обновить

Новые функции были добавлены в Android. Если вы читаете это, я бы посоветовал вам теперь изучить GcmNetworkManager . Это оптимизирует время работы от батареи и работает до леденца. Для Lollipop вы можете использовать JobScheduler . Я бы посоветовал использовать эти классы над AlarmManager.

Я считаю, что лучше всего подходит GcmNetworkManager . В основном у него есть все, что вам нужно от AlarmManager плюс настойчивость, поэтому после перезагрузки можно продолжить выполнение.

Пример:

PeriodicTask task = new PeriodicTask.Builder() .setService(MyTaskService.class) .setTag(TASK_TAG_PERIODIC) .setPeriod(5L) .build(); mGcmNetworkManager.schedule(task); 

В качестве альтернативы я сравниваю текущую неделю:

 Calendar cal = Calendar.getInstance(); int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR); SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0); int weekOfYear = sharedPreferences.getInt("weekOfYear", 0); if(weekOfYear != currentWeekOfYear){ SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("weekOfYear", currentWeekOfYear); editor.commit(); // Your once a week code here } 

Я не сторонник этого лучше, чем решение Alarm. Я просто показываю другой подход.