警报管理器:每次打开活动时都会忽略警报参数和运行方法

时间:2018-12-08 01:32:35

标签: android broadcastreceiver persistence alarmmanager

我正忙于每日报价应用程序...设置了警报管理器,以在MainActivity中运行一个方法,该方法每天早晨0900用数据库中的报价填充listView。该方法运行且listView填充良好但会忽略警报计划,并且填充的数据不会持续存在。

如果用户离开主要活动,然后返回,或者关闭并重新打开该应用程序,则该方法将再次运行,并且列表视图将填充新的引号,而不是持久保存并且仅按计划的时间间隔运行。

关于如何解决此问题的任何想法?

这是我的代码:

在这里,我在MainActivity的onCreate方法中动态注册警报:

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();

    }
}

这是设置我的闹钟的方法。我从MainActivity中的onCreateMethod调用此方法:

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{

0 个答案:

没有答案