Я хотел бы реализовать фоновую службу и широковещательный приемник, чтобы проверять, есть ли интернет на моем устройстве, и делать HTTP-запросы, даже когда приложение закрыто, и все это из моей деятельности. Для этого я проверил темы на этом сайте, но я не понимаю некоторые вещи. Я не понимаю, как это сделать, функция OnReceive() в моем широковещательном приемнике вызывается каждый раз при изменении подключения? Или только когда я регистрирую свой приемник в своей деятельности? Может ли кто-нибудь рассказать мне больше о том, что мне нужно сделать, чтобы достичь того, чего я хочу? Я уже создал свой широковещательный приемник, но я немного потерялся в других частях. Спасибо
Android: широковещательный приемник и фоновая служба
Ответы (1)
Во-первых, чтобы создать фоновую службу в рамках приложения, вы можете использовать классы Handler, если бы это было вне области приложения, можно было бы использовать GCMTaskManger или JobScheduler.
делать http-запросы, даже когда приложение закрыто, все это из моей деятельности
Для этого используйте JobScheduler или GCMTaskManager, которые будут вызывать ваши http-запросы, даже когда приложение закрыто.
Может ли кто-нибудь рассказать мне больше о том, что мне нужно сделать, чтобы достичь того, чего я хочу?
Итак, допустим, вы используете GCMTaskManager, вы сначала инициализируете службу.
mGcmNetworkManager = GcmNetworkManager.getInstance(this);
затем запланируйте выполнение своих задач в течение определенного интервала
PeriodicTask task = new PeriodicTask.Builder()
.setService(MyTaskService.class)
.setTag(TASK_TAG_WIFI)
.setPeriod(30L)
.build();
mGcmNetworkManager.schedule(task);
а потом слушать события
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(MyTaskService.ACTION_DONE)) {
String tag = intent.getStringExtra(MyTaskService.EXTRA_TAG);
int result = intent.getIntExtra(MyTaskService.EXTRA_RESULT, -1);
String msg = String.format("DONE: %s (%d)", tag, result);
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}
};
функция OnReceive() в моем широковещательном приемнике вызывается каждый раз при изменении подключения
Это зависит от службы, генерирует ли она события для слушателя, если да, то вызывается onReceive.
Я предлагаю вам прочитать эту статью для планировщиков https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/ Надеюсь, это поможет.