Intereting Posts
Как изменить размер шрифта ProgressDialog Message в программном обеспечении Android? Не удается разрешить метод getSupportFragmentManager () в студии Android Как узнать, был ли выбран элемент spinner в android? Почему я не должен устанавливать layout_width и layout_height в стиле? Не удалось удалить оповещение на Android-леденец даже после нажатия уведомления даже после использования AUTOCANCEL Файл Keystore D \ Telegram-master \ TMessagesProj \ config \ release.keystore не найден для подписания config 'debug' Как разобрать URL-адрес из строки в Android? Regex не работает в Android, но отлично работает на Java Запуск программы поддержки Android v4 Обработка неизвестных схем URI в Android (пример Bitcoin) Могу ли я разрабатывать Android без телефона Android? Не удалось запустить сервис Intent {cmp = com.marie.mainactivity / .BackgroundService}: не найден Почему мой метод сравнения исключает исключение – метод сравнения нарушает его общий контракт! GPU Профилирование и обратные вызовы в OpenGL ES ArrayAdapter и ListView – ArrayIndexOutOfBoundsException

Планирование автономных задач, которые должны выполняться при подключении пользователя к Интернету

В моем приложении я выполняю автономное кэширование, и я хочу запланировать автономные задачи, которые будут выполняться при подключении пользователя к internet.I нашел для него API JobScheduler , но он поддерживает только уровень API 21. Есть ли альтернатива JobScheduler для API менее 21, которая Помочь мне планировать задачи, которые будут выполняться при подключении пользователя к Интернету?

Вы можете использовать GcmNetworkManager , он соответствует потребностям, которые вы описали, вот рабочий пример. Он использует JobScheduler внутренне выше 21, а ниже 21 он использует некоторую Google правильность

Сделать широковещательный приемник для получения возможности подключения

public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { final ConnectivityManager connMgr = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); final android.net.NetworkInfo wifi = connMgr .getNetworkInfo(ConnectivityManager.TYPE_WIFI); final android.net.NetworkInfo mobile = connMgr .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (wifi.isAvailable() || mobile.isAvailable()) { // Do something Log.d("Netowk Available ", "Flag No 1"); } } } 

И в вашем манифесте добавьте разрешение

 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 

Существует несколько способов запуска «заданий» pre-lollipop.

Как уже упоминалось, вы можете использовать библиотеку JobSchedulerCompat, но эта библиотека имеет огромное значение по сравнению с Lollipop API по умолчанию:

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

Другой вариант, который вы можете попробовать, – это API AlarmManager. Этот API можно использовать для планирования заданий, но одно отличие состоит в том, что AlarmManager не имеет ограничений, кроме времени для выполнения заданий.

Поскольку KitKat API AlarmManager также выполняет задания, если они не запланированы с помощью «точных» методов. Перед тем, как задания KitKat не упакованы.

Если ваша цель – синхронизировать данные, может оказаться полезным API-интерфейс Sync-Adapter : Sync-Adapter

Ссылки: AlarmManager ,

Обратный путь для JobScheduler для Android Lollipop для api 10+ JobSchedulerCompat