Alarm Manager: игнорирует параметры тревоги и метод запуска при каждом открытии активности - PullRequest
0 голосов
/ 08 декабря 2018

Я занят приложением для ежедневных цитат ... 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{
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...