андроид запуск и остановка приложений по расписанию

Планирование задач в Андроид

Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «Schedule tasks and jobs intelligently in Android» от Ankit Sinhal.

В современной разработке приложений очень часто выполняются задачи асинхронно, и их объем выходит за пределы жизненного цикла приложения. В некоторых ситуациях мы также должны выполнять некоторые работы, но это не обязательно делать прямо сейчас. Чтобы запланировать фоновые работы, Android представила несколько API, которые мы можем грамотно использовать в наших приложениях.

Выбор подходящего планировщика может улучшить производительность приложений и время автономной работы устройства.

Для планирования задач на Android доступно несколько API:

Проблемы с сервисами

Сервисы позволяют выполнять длительные операции в фоновом режиме. Запуск сервисов в фоновом режиме очень негативно влияет на заряд батареии.

Сервисы особенно вредны, когда они постоянно использует ресурсы устройства, даже если не выполняет полезные задачи.

Запланированный задачи во время жизненного цикла приложения

Когда приложение запущено, и мы хотим запланировать или запустить задачу в определенное время, рекомендуется использовать класс Handler вместе с Timer и Thread.

Запланированные задачи при выключенном приложении

Alarm Manager

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

Мы должны использовать API AlarmManager только для задач, которые должны выполняться в определенное время

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

Job Scheduler

Это главный из всех упомянутых вариантов планирования и очень эффективный с фоновыми работами. JobScheduler API, который был представлен в Android 5.0 (API уровня 21).

Этот API позволяет выполнять задания, когда у устройства больше доступных ресурсов или при соблюдении правильных условий. Все условия могут быть определены при создании задания. Когда объявленные критерии будут выполнены, система выполнит это задание в JobService вашего приложения. JobScheduler также отменяет выполнение, если необходимо, чтобы соблюдать ограничения режима Doze и App Standby.

GCM Network Manager

GCM (Google Cloud Messaging) Network Manager имеет все функции расписания из JobScheduler. GCM Network Manager также предназначен для выполнения многократной или одноразовой, неминуемой работы при сохранении времени автономной работы.

Он используется для поддержки обратной совместимости и может также использоваться под Android 5.0 (API уровня 21). Начиная с уровня API 23 или выше, GCM Network Manager использует JobScheduler для платформы. GCM Network Manager использует механизм планирования в службах Google Play, поэтому этот класс будет работать только в том случае, если на устройстве установлены сервисы Google Play.

Google настоятельно рекомендовал пользователям GCM перейти на FCM и вместо этого использовать диспетчер заданий Firebase для планирования любых задач.

Firebase Job Dispatcher

Firebase JobDispatcher также является библиотекой для планирования фоновых заданий. Он также используется для поддержки обратной совместимости (ниже API 21) и работает во всех последних версиях Android (API 9+).

Эта библиотека также будет работать, если на устройстве нет установленных сервисов Google Play. В этом состоянии эта библиотека внутренне использует AlarmManager. Если на устройстве доступно приложение Google Play, он использует механизм планирования в службах Google Play.

Sync Adapter

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

Упражнение

Мы обсудили достаточно теории, поэтому теперь посмотрим, как использовать планировщик заданий Android.

Создание Job Service

Создайте JobSchedulerService extends JobService, который требует, чтобы были созданы два метода onStartJob (параметры JobParameters) и onStopJob (параметры JobParameters).

Метод onStartJob вызывается, когда JobScheduler решает запустить вашу работу. JobService работает в основном потоке, поэтому любая логика должна выполняться в отдельном потоке. Метод onStopJob вызывается, если система решила, что вы должны прекратить выполнение своей работы. Метод вызывается до jobFinished (JobParameters, boolean).

Вам также необходимо зарегистрировать свою службу в AndroidManifest.

Создать объект JobInfo

Чтобы построить объект JobInfo, передайте JobService в JobInfo.Builder (), как показано ниже. Этот конструктор заданий позволяет установить множество различных параметров управления при выполнении задания.

Запланированная задача

Теперь у нас есть JobInfo и JobService, поэтому пришло время планировать нашу работу. Все, что нам нужно сделать, это запланировать работу с требуемой JobInfo, как показано ниже:

Заключение

При планировании задания вам нужно тщательно подумать о том, когда и что должно вызвать вашу задачу, и что должно произойти, если она по какой-то причине не сработает. Вы должны быть очень осторожны с производительностью вашего приложения, а также с другими аспектами, такими как заряд батареи.

JobScheduler легко реализуется и обрабатывает большую часть за вас. При использовании JobScheduler наши запланированные задания сохраняются, даже если система перезагружается. В настоящий момент единственным недостатком JobScheduler является то, что он доступен только для 21 уровня api (Android 5.0).

Источник

Эти приложения для Android помогут автоматизировать всё

Благодаря открытости для разработчиков Android может предложить своим пользователям функции, которых нет ни в одной другой мобильной ОС. Для каждой задачи существует множество приложений на любой вкус. В этот раз я расскажу о нескольких программах для автоматизации действий на смартфоне.

Tasker

image 35

Конечно, начать пост об автоматизации действий на Android нельзя ни с одного другого приложения. Tasker — одна из самых мощных, продвинутых и популярных программ в этой категории.

С её помощью можно не только автоматизировать работу сенсоров смартфона, добавлять пользовательские сценарии и тому подобное. С помощью Tasker можно управлять умными устройствами в доме. Вот лишь небольшой список примеров таких задач:

Кроме этого, программа может быть расширена при помощи огромного набора плагинов к ней. Единственный минус — Tasker стоит аж целых 100 рублей ?.

AutomateIt

image 36

AutomateIt я бы порекомендовал тем, кто хочет иметь всю мощь Tasker, но при этом не смог справиться со сложными настройками. AutomateIt, как и конкурент, поддерживает пользовательские плагины и может управлять настройками смартфона по определённым сценариям.

Я предпочитаю именно эту программу другим альтернативам. Русский язык, простая и понятная настройка сценариев и множество параметров работы.

Сама программа бесплатна, а вот за готовые правила придётся заплатить. Но это нужно будет, если вам самому лень настраивать их.

Automate

image 37

Automate — хорошая альтернатива программам выше. Её основная особенность заключается в том, что правила настраиваются в виде диаграммы. Такое визуальное представление может быть для кого-то более простым и понятным. При этом для каждого блока диаграммы можно настроить несколько веток и объединять различные шаги в зависимости от условий.

Ещё программа бесплатна и поддерживает плагины от Tasker и Locale.

Droid Automation

image 38

Droid Automation поставляется в двух версиях: Pro за 190 рублей и бесплатной. В бесплатной версии недоступна работа с Root-девайсами.

Особых «фишек» у этой программы нет. Вы так же можете создавать различные сценарии автоматизации, управлять сенсорами и программами. Но все сценарии здесь разделены на профили, а не свалены в одну кучу. Профили можно активировать автоматически или с помощью виджетов на главном экране.

Для рут-боев доступны сценарии, включающие действия для смартфонов с рут-доступом.

MacroDroid

image 40

MacroDroid — это, пожалуй, самая юзер-френдли программа из всех. Красивый и понятный русскоязычный интерфейс поможет быстро настроить сценарии использования при помощи специального мастера, который проведёт по всем шагам.

Кроме этого, для популярных сценариев в программе сразу же предусмотрены шаблоны. А продвинутые пользователи смогут расширить возможности MacroDroid с помощью плагинов и условий вроде ЕСЛИ, ТОГДА, ИЛИ и других.

Automagic * Automation

image 41

Ищете альтернативу Automate? Automagic * Automation — и есть такая альтернатива за 113 рублей. И на самом деле, сказать что-то ещё про это приложение сложно. Вы так же настраиваете сценарии, указываете условия и действия. Всё это представлено в виде диаграмм с возможностью разветвления.

Contextual App Folder (C.A.F.)

image 42

C.A.F. нельзя назвать полноценной программой для автоматизации действий и работы устройства. «Фишка» приложения в контекстуально-зависимых папках с приложениями.

Во время первоначальной настройки вы разбиваете все (нужные) приложения на смартфоне по категориям. Например, дома вам нужен один набор программ, на работе — другой, а во время занятий спортом — третий. После этого Contextual App Folder при помощи одного из триггеров (геолокация, Wi-Fi, Bluetooth) автоматически будет создавать на рабочем столе папку с нужными приложениями.

E-Robot

image 43

E-Robot является прямой альтернативой Tasker и AutomateIt. Но, в отличие от них, сценарии оперируют таким понятием, как команда. На самом деле, от смены названия ничего не меняется, и вы всё так же создаёте различные сценарии в зависимости от наступающих событий.

Команды понадобятся лишь тем, кто знаком с JavaScript. Да, E-Robot может выполнять скрипты.

Если покопаться в Google Play, можно найти ещё с десяток подобных программ. Я в свой пост включил лишь самые лучшие или популярные из них. К тому же я опирался на возможность создания комплексных сценариев с различными результатами и максимальной автоматизацией.

Но если вы просто хотите включать автоматически музыку при подключении наушников, выключать звонки на работе, то для этого можно скачать более простые программы. Которые в один тап настраивают такие сценарии. Например, Profile Manager.

Источник

Tasker для Android: король автоматизации

В середине лета число приложений в официальном магазине Google Play достигло одного миллиона. И, возможно, самое функциональное среди них — это Tasker. Несмотря на то, что приложение не относится к категории «Игры», несмотря на то, что оно требует немало времени на освоение, все же оно стабильно держится в топе самых популярных платных программ в Google Play.

В том, что у Tasker огромная аудитория почитателей, нет ничего удивительного, ведь приложение дает возможность каждому найти свои способы его использования. Если говорить в общем, Tasker — это приложение для автоматизации. В его основе лежит идея о том, что многие действия, которые пользователь выполняет на своем мобильном устройстве, являются, во-первых, повторяемыми, а во-вторых, связанными с некими событиями. Например, когда вы приходите в театр или в медицинский центр, вы отключаете звук на телефоне, а когда оказываетесь дома — включаете на планшете Wi-Fi. Все подобные действия Tasker может выполнять в автоматическом режиме, разгружая голову владельца мобильного устройства для других, более важных дел.

sm.1.600

Tasker — не единственное приложение для автоматизации устройств с Android, и многие его возможности можно также обнаружить в программах on, Locale и им подобных. Однако других столь функциональных приложений, как Tasker, не существует. Программа выходит далеко за рамки обычных шаблонов — имея некоторые навыки ее использования, можно придумывать практически любые сценарии для автоматизации, содержащие множество уровней, и даже создавать на основе Tasker собственные приложения.

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

sm.2.600

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

⇡#Основная терминология

Для работы с приложением используется семь основных терминов: задачи, действия, контексты, профили, проекты, сцены, переменные. В основе любых операций, которые способна выполнить программа, лежит формула: «Если произошло событие X, нужно автоматически выполнить Y».

Y в этой формуле — это действие, то, что приложение автоматически выполняет при определенных условиях. Действием может быть отправка SMS, отключение сигнала при поступлении входящих звонков, вывод на экран уведомления и так далее. Всего в приложении предлагается более двухсот действий. Большинство из них имеют настройки и могут быть связаны между собой.

sm.3.600

X в формуле — это контекст, то есть некое событие или условие, при срабатывании которого Tasker начинает действовать. В приложении предусмотрено несколько видов контекстов: время, дата, место, событие и состояние.

sm.4.600

Если смартфон оказался за чертой города, это контекст места, а 7:15 утра — контекст времени. Контекст события — это, например, поступление входящего звонка с указанного номера. А контекст состояния — это некое условие, которое является активным в течение некоторого промежутка времени. И в течение этого времени выполняются заданные действия.

Ни действия, ни контексты не существуют сами по себе. Действиями управляют задачи, а контекстами — профили. Одна задача может содержать любое количество действий, а один профиль — до четырех контекстов и до двух задач. Таким образом, в рамках одной операции можно выполнять целый набор действий.

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

Профиль включает и контексты, и задачи, причем если в профиле используется несколько контекстов, то только один из них может быть контекстом события, ведь одновременное срабатывание двух контекстов в то же самое время невозможно. Профиль имеет собственные настройки, при помощи которых можно выбирать приоритет запуска задач, включать «тихий» режим работы (когда информация о срабатывании профиля не видна в строке состояния Android), указывать максимальное число его срабатываний и выбирать минимально допустимый промежуток времени, который может проходить между двумя его запусками.

sm.5.600

Также в Tasker предусмотрена возможность создания элементов пользовательского интерфейса, которые тут называются сценами. Понятие проекта используется для организации всех задач, профилей и сцен в одном месте, для экспорта и создания на основе настроек Taskler отдельных приложений.

⇡#Начало работы

Первое, что стоит сделать после запуска Tasker, — переключиться в обычный режим в настройках приложения. По умолчанию оно запускается в режиме новичка и имеет упрощенный интерфейс. На соответствующих вкладках можно создавать профили, задачи, сцены и просматривать список уже имеющихся.

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

Для примера создадим простой профиль, который будет автоматически запускать приложение Skype при подключении гарнитуры к устройству. На вкладке профилей нажмите на кнопку создания нового элемента приложения и выберите контекст состояния «Аппаратура → Наушники подключены». В списке «Тип» выберите вариант «С микрофоном», чтобы приложение реагировало только на подключение гарнитуры.

sm.6.600

Вернитесь к списку профилей и добавьте в профиль новую задачу.

sm.7.600

Нужно будет придумать для нее произвольное название, скажем «Запуск Skype». Добавьте в задачу новое действие. Для удобства организации они разделены по группам, которых более двадцати.

sm.8.600

Перейдите в категорию «Сигнал → Menu». Теперь нужно настроить действие. Для этого в поле Items нажмите на кнопку добавления нового элемента, после чего щелкните по кнопке «Действие». Укажите категорию «Приложение → Запустить приложение», а затем выберите Skype в списке всех установленных приложений, который будет выведен на экран.

Новый профиль готов к использованию. По умолчанию все вновь создаваемые в Tasker профили включаются сразу же после создания, поэтому, если вы пока что не планируете работать с ним, воспользуйтесь переключателем напротив названия профиля.

sm.9.600

Все задачи, созданные пользователем, сохраняются на вкладке Tasks. Их можно редактировать, а также использовать повторно при создании новых профилей. Список доступных задач показывается каждый раз при добавлении задачи в новый профиль. Кстати, если в списке случайно выбрана не та задача, можно быстро вернуться к окну выбора при помощи кнопки Switch Event. Подобная кнопка — Switch State — отображается и при добавлении контекста.

Если нужно, чтобы профиль содержал несколько контекстов или задач, достаточно коснуться уже имеющегося в нем контекста (задачи) и некоторое время удерживать палец. Появится меню, в котором можно выбрать добавление нового элемента. Это меню также дает возможность удалять текущие элементы, клонировать контексты (это удобно, если нужно добавить два однотипных контекста с немного измененными настройками), менять задачи на другие.

⇡#Запуск задач при помощи виджета в ручном режиме

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

Чтобы создать виджет для запуска задачи, перейдите к списку виджетов Android. Коснитесь элемента Tasker и удерживайте палец, пока виджет не будет перенесен на стартовый экран. При этом возникнет меню выбора задачи. Можно будет или выбрать из уже имеющихся, или создать новую задачу. После этого Tasker предложит вам возможность добавить в задачу дополнительные действия и выбрать значок для показа виджета. После завершения настройки его можно будет увидеть на стартовом экране.

Несмотря на то, что в Tasker предусмотрена возможность ручного запуска, все же основное предназначение приложения — выполнение задач в автоматическом режиме. Поэтому рассмотрим примеры создания нескольких востребованных профилей.

⇡#Включение функций энергосбережения при низком заряде аккумулятора

Некоторые функции смартфонов удобны, но сильно влияют на время автономной работы устройства. Если нет возможности подзарядить смартфон и нужно, чтобы он проработал как можно дольше, при помощи Tasker можно настроить автоматическое отключение некоторых функций. Для этого используются контекст состояния и задача, содержащая несколько действий.

Добавьте контекст «Состояние → Зарядка → Уровень зарядки аккумулятора». В его настройках укажите уровень заряда, при котором задача будет срабатывать.

sm.10.600

Создайте новую задачу и добавьте действие «Экран → Яркость дисплея». Уменьшите яркость дисплея до желаемого уровня. Вернитесь к добавлению действий и добавьте еще одно, например «Сеть → Изменить статус Wi-Fi». Убедитесь, что в настройках действия выбран вариант «Отключить». Теперь Tasker также будет отключать соединение по Wi-Fi.

Также можно отключить автосинхронизацию. Для этого добавьте действие «Сеть → Автосинхронизация» и выберите вариант «Выключить» в списке «Установка».

Можно добавить и другие действия, которые помогут продлить срок автономной работы устройства.

sm.11.600

⇡#Звуковой сигнал в случае перегрева аккумулятора

Перегрев аккумулятора может стать причиной выхода устройства из строя, поэтому неплохо было бы узнавать об этом как можно раньше, чтобы адекватно реагировать. Для создания такого профиля используется событийный контекст «Зарядка → Перегрев аккумулятора». Используемая в профиле задача будет включать действие «Сигнал → Уведомление со звуком».

sm.12.600

Настройка действия сводится к выбору звукового файла (это может быть любой аудиофайл, хранящийся в памяти устройства или на SD-карте, а также сигнал из коллекции звуков Tasker). Также можно настроить вывод текстового уведомления на экране устройства. Текст нужно ввести в поле «Название».

⇡#Отправка уведомлений на основе местоположения

Если устройство оснащено модулем GPS, можно использовать контекст «Место». Он очень полезен для забывчивых. Например, если вы все время забываете зайти в банк, чтобы забрать новую карточку, можно настроить Tasker таким образом, чтобы он прислал вам SMS, как только вы окажетесь в радиусе пятисот метров от отделения.

Контекст «Место» работает на основе карт Google. Когда вы выбираете его, требуется указать координаты банка, а также радиус срабатывания контекста. Чтобы получить SMS с напоминанием, нужно использовать задачу с действием «Телефон → Отправить SMS». В поле «Сообщение» напишите текст напоминания, а в поле «Номер» добавьте собственный номер телефона.

Контекст «Место» может работать и без GPS, с использованием сетевых настроек. Но определение местоположения в этом случае происходит менее точно.

⇡#Автоматический ответ на SMS и пропущенные звонки

Для реализации некоторых действий в Tasker используются переменные. Без них не обойтись, например, если нужно использовать смартфон как автоответчик, рассылающий сообщения по всем номерам, с которых были получены SMS или поступили звонки. Предположим, отправка сообщений должна осуществляться не круглые сутки, а лишь в то время, когда вы не можете ответить самостоятельно: в нерабочее время и ночью. Для реализации такого задания в профиле нужно использовать два контекста, поскольку необходимо создать сложное условие запуска действий: «Если я получаю SMS в то время, когда я сплю или отдыхаю с семьей…». Кстати, невозможно создать один профиль, который был бы предназначен для ответов и на звонки, и на SMS. Поступление звонков и поступление входящих сообщений — это два отдельных событийных контекста, которые, как мы помним, не могут одновременно использоваться в одном профиле.

Добавьте контекст «Время» и укажите период времени, в течение которого он будет активен. Теперь создайте задачу с действием «Телефон → Отправить SMS». В поле «Сообщение» напишите текст автоматического ответа на SMS. В поле «Номер» укажите переменную «SMS от номера». Теперь сообщения будут отправляться на те номера, с которых получены SMS.

После настройки действия вернитесь к списку профилей и добавьте в профиль второй контекст — «Событие → Телефон → Получено текстовое сообщение».

sm.13.600

Чтобы добавить подобный профиль для ответа на пропущенные звонки, нужно клонировать этот профиль, после чего изменить некоторые его настройки. Перейдите к настройкам контекста «Получено текстовое сообщение» и измените его на контекст «Событие → Телефон → Пропущен вызов». Теперь вернитесь к списку профилей, перейдите к настройкам действия и в поле «Номер» измените переменную на %CNUM. Сообщения будут отправляться на те номера, с которых вам звонили.

⇡#Включение беззвучного режима при переворачивании смартфона экраном вниз

При помощи Tasker можно настроить смартфон таким образом, что он автоматически будет переходить в беззвучный режим в заданное время, а потом возвращаться в обычный режим. Но ситуации, в которых громкий вызов телефона нежелателен, могут возникать и спонтанно. Предусмотреть их все невозможно, поэтому лучше запастись профилем, который будет отключать звонок при срабатывании простого условия: устройство перевернуто экраном вниз.

Для создания такого профиля добавьте контекст «Состояние → Sensor → Ориентация». В его настройках раскройте список «Положение» и выберите вариант «Экраном вниз».

sm.14.600

Создайте новую задачу с действием «Аудио → Режим тишины». В настройках действия выберите вариант «Тишина» в списке «Режим».

⇡#Заключение

Мы рассмотрели лишь несколько самых простых примеров работы с Tasker. Но программу можно с успехом использовать и в сотнях других случаев. Она может запускать приложения в заданное время, выводить на экран музыкальный плеер, как только вы вставляете наушники в гнездо, поздравлять с днем рождения всех друзей и родственников, автоматически отправляя SMS в нужные дни, будить любимых романтической эсэмэской по утрам и делать еще сотни других вещей, которые обязательно придут вам в голову, как только вы начнете использовать Tasker. Удачи в освоении!

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • андроид запретить автозапуск приложений на андроид
  • андроид запрет удаления приложений