0

用户可以创建不同的警报。因此,何时保持警报取决于用户,他可以保持多个警报,我将所有计划的警报维护在数据库中并显示给用户以供进一步参考。下面是我的代码。

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 块和 for repeat daily,代码转到代码中的 else if 块。

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

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

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

4

1 回答 1

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>
于 2013-05-06T10:42:17.120 回答