2013-05-06 104 views
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块,对于repeat daily,代码将转到else代码中的其他块。

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

所以我读了很多关于这个的帖子,比如post1,post2。他们都只是使用broadcast receiver来知道设备已重新启动。在广播接收器收到设备重新启动的提示后,是否需要重复上述代码,方法是从sqlite数据库获取信息以使所有警报生效?如果是这样,有人可以帮我从广播接收机那里做到这一点吗?代码片段赞赏

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

回答

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> 
+0

我设置所有报警每当用户点击保持提醒每个报警上面的代码。如何跟踪最早的警报。假设如果因为用户将他的设备保持在关闭模式而最早的警报不会触发,那么下一个警报就不会被触发,对吗? – rick 2013-05-06 10:45:18

+0

这是正确的,从广播接收器,继续并设置所有的警报,如我粘贴的代码中所示。 – 2013-05-06 10:46:41

+0

如果是这样的话,当你设置新的警报时,最早的警报实际上是过去的。你可以处理你认为合适的方式。 – 2013-05-06 10:48:57