Intereting Posts
Отображение японского вместо китайского в текстовом виде Android: Как автоматически генерировать Java-код из файла макета? Как создать 3D-анимацию в Android? Почему использование multiDexEnabled (true) позволяет создавать приложение, но постоянно падает? Android: профиль GATT с низким энергопотреблением Bluetooth Как установить размер холста? Невозможно воспроизвести файл .mov в VideoView Приложение закрыто после нажатия кнопки «Назад» в фрагменте База данных SQLite, многопоточность, блокировка и синхронизация учетной записи на android Добавление ActionBar в приложение Android API уровня 8? Как восстановить исходную активность моей игры Android (уровень GLES) после завершения телефонного разговора? Recyclerview onscrolllistener не работает, если setNestedScrollingEnabled – false Создание растрового изображения из массива байтов, которое распаковывается из файла JPEG через libjpeg Покупки в приложениях: доля пользователей в покупках In-App между Android и iOS Какие альтернативы PlayN?

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

В моем приложении я выполняю автономное кэширование, и я хочу запланировать автономные задачи, которые будут выполняться при подключении пользователя к 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