У меня сейчас проблема с интеграцией AlarmManager и BroadcastReceiver.
Я - мое приложение, у меня запущена фоновая служба, которая работает независимо от того, запущено приложение или нет.Я думаю, что эта часть работает нормально.Фоновая служба хранит массив, который изменяется в зависимости от местоположения пользователя.Однако в 8:00 каждый день я хочу, чтобы приложение сбрасывало переменную массива по умолчанию.После долгих поисков в Интернете, похоже, что сделать это можно с помощью AlarmManager (чтобы запускать задачу каждые 8:00) и с помощью BroadcastReceiver (для получения сигнала тревоги и выполнения задачи).код выглядит примерно так:
public class BackgroundService extends Service {
private ArrayList thisArray;
private BroadcastReceiver thisReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
setArrayToDefault();
}
}
@Override
public void onCreate(){
super.onCreate();
Calendar cal = new GregorianCalendar();
cal.add(Calendar.MINUTE, 2); //example
this.registerReceiver(thisReceiver, new IntentFilter("BackgroundService"));
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), ONE_MINUTE, "what to put here?"); //example, repeat every minute
}
private void setArrayToDefault(){
//here, the array will be changed back to default values
}
}
Моя основная проблема заключается в том, как настроить AlarmManager для вызова thisReceiver каждый раз, когда он установлен.Любая идея?Мой подход правильный?