Я занят приложением для ежедневных цитат ... Alarm Manager настроен для запуска метода в MainActivity, который каждое утро в 09:00 заполняет listView цитатой из базы данных. Метод запускается, и listView заполняется очень хорошоно игнорирует расписание тревоги и заполненные данные не сохраняются.
Если пользователь покидает основное действие, а затем возвращает или закрывает и снова открывает приложение, метод запускается снова, а представление списка заполняется новой цитатой, а не сохраняется и выполняется только с запланированным интервалом.
Есть идеи, как это исправить?
Вот мой код:
Здесь я динамически регистрирую тревогу в методе onCreate MainActivity:
mTodaysQuoteReceiverStaticInnerClass = new
TodaysQuoteReceiverInnerStaticClass();
IntentFilter filter = new
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
filter.addAction(Intent.ACTION_BOOT_COMPLETED);
this.registerReceiver(mTodaysQuoteReceiverStaticInnerClass, filter);
Вот мой класс приемника (который я сделал внутренним классом в MainActivity):
public class TodaysQuoteReceiverInnerStaticClass extends BroadcastReceiver{
@Override
public void onReceive(final Context context, final Intent intent){
MainActivity.this.PopulateTodaysQuote();
}
}
Вот метод, который устанавливает мою тревогу.Я вызываю этот метод из onCreateMethod в MainActivity:
public void todaysQuoteAlarm(){
long currentTime = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 20);
calendar.set(Calendar.MINUTE, 9);
calendar.set(Calendar.SECOND, 0);
if (currentTime <= calendar.getTimeInMillis()) {
Intent myIntent = new Intent(this,
TodaysQuoteReceiverInnerStaticClass.class);
int ALARM1_ID = 10000;
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,
ALARM1_ID, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)
this.getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
else{