首页 > 解决方案 > 警报管理器:每次打开活动时忽略警报参数并运行方法

问题描述

我正忙于一个每日报价应用程序...警报管理器设置为在 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{

标签: androidbroadcastreceiverpersistencealarmmanager

解决方案


推荐阅读