重启时重置警报

时间:2013-05-06 10:25:19

标签: android alarmmanager reboot

用户可以创建不同的警报。因此,用户何时可以保持警报并且可以保留多个警报,并且我将所有预定的警报保存在数据库中并显示给用户以供进一步参考。以下是我的代码。

if("CREATEONCE".equals(strparam1))
    {
         am.set(AlarmManager.RTC_WAKEUP, l2, pi);// l2 is time in millis
    }else if("CREATEREPEAT".equals(strparam1))
        {

    am.setRepeating(AlarmManager.RTC_WAKEUP, l2, 86400000 , pi); //l2 is time in millis
    }

所以这是设置警报的代码。用户可以设置多个警报。例如,他为7.00 am保留一次警报,8.00 am一次警告9.00 am dialy。因此,对于once alarms代码转到if和repeat daily,代码转到else,如果在代码中阻塞。

如果用户在6.00 am设置了上述3个警报。如果他在设置警报后立即重新启动设备,则不会触发整个警报。

所以我在post1post2上看了很多关于此的帖子。他们都只是使用broadcast receiver来知道设备重启。在广播接收器收到设备重启的提示后,是否需要通过从sqlite数据库获取信息以使所有警报工作,再次重复上述代码?如果是这样,有人可以帮助我从广播接收器那里做到这一点吗?感谢代码片段

假设用户设置50 alarms,获取所有50个警报的信息并重新设置它们不是一个漫长的过程吗?

1 个答案:

答案 0 :(得分:3)

我不知道你是如何存储你的警报的。但我建议为最早出现的警报设置一个系统级警报就足够了。然后,一旦触发,再次设置警报以进行下一次最快的触发警报。

我建议将您的AlarmSetting呼叫置于服务中,然后从广播接收器中调用它。

public class AlarmResetReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
       //your code to set up alarms
    }
}

您还需要在清单中再次设置闹钟的其他条件

<receiver android:name=".receivers.AlarmResetReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.TIME_SET" />
            <action android:name="android.intent.action.TIMEZONE_CHANGED" />
            <action android:name="android.intent.action.LOCALE_CHANGED" />
        </intent-filter>
    </receiver>