Я создаю приложение, которое в настоящее время выполняется как автономное приложение, которое опросает службу с помощью AsyncTask. Я хотел бы переместить опрос в службу Android, которая запускается при запуске и может уведомить пользователя об изменениях. Кривым шаром является необходимость делиться этими данными между действиями (и скоро будущей службой), поэтому я не потребляю батарею со всех сторон назад и вперед между хранилищем и хранилищем в памяти.Фоновый опрос Android и пользовательский интерфейс
Есть ли способ создать службу, которая работает в фоновом режиме, опрос каждые полчаса с помощью AlarmManager, который делится (через константы) данными с Пользовательским интерфейсом, который можно запустить, нажав на уведомление, которое служба создает или через сама пусковая установка?
Сейчас это, как далеко я получил:
Вот служба:
public class PollService extends Service {
private final IBinder binder = new PollBinder();
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
SharedData.update();
return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
public class PollBinder extends Binder {
PollService getService() {
return PollService.this;
}
}
}
Это запустит сервис ...
public class PollScheduleReceiver extends RoboBroadcastReceiver {
private static final int POLL_FREQ_SEC = 30;
@Override
protected void handleReceive(Context context, Intent intent) {
Intent schedulerIntent = new Intent(context, PollStartReceiver.class);
PendingIntent pendingSchedulerIntent = PendingIntent.getBroadcast(context, 0, schedulerIntent, PendingIntent.FLAG_CANCEL_CURRENT);
calendar.add(Calendar.SECOND, POLL_FREQ_SEC);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), POLL_FREQ_SEC * 1000, pendingSchedulerIntent);
}
}
Это вызовет триггер при загрузке:
public class PollStartReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent pollService = new Intent(context, PollService.class);
context.startService(pollService);
}
}