我已安排多个警报管理器在不同时间发送意图。 我小心翼翼地将唯一ID,上下文和附加内容传递给两个挂起的意图。 在func下方处理报警电话。 。
public void handle(int duration, int id){
Intent intent = new Intent("package.SET");
intent.putExtra ("package.id", Id);
AlarmManager amg = (AlarmManager)Context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pis = PendingIntent.getBroadcast(Context,Id, intent, FLAG_ONE_SHOT);
amg.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + time, pis); }
有2个呼叫闹钟的功能
public void callalarm(int time){
handle(time, UNIQUE_ID1);}
和
public void callalarm2(int time){
handle(time, UNIQUE_ID2);}
我注意到唯一的ID1和Unique_ID2是不同的。 广播接收器处理警报并执行另一个代码。 Callalarm1和callalarm2是否有可能互相干扰。
我使用registerReceiver函数注册了接收器,而不是在android清单文件中 。
IntentFilter ARFilter = new IntentFilter();
ARFilter.addAction("package.SET");
context.registerReceiver(AR, ARFilter);
在扩展广播接收器的AR中,我使用id来定义动作。
public BroadcastReceiver AR= new BroadcastReceiver()
{ public void onReceive(Context context, Intent intent)
{ // i do some stuff here which is confidential
}}
问题在于,警报延迟了。是否有延迟的原因?
答案 0 :(得分:1)
据我所知,当处理器的任务负担很重时,警报MAnager无法在正确的时间触发。
换句话说,广播接收器没有按时接收意图,因为警报管理器将广播添加到队列中,该队列有一定的延迟发送。
准确的信息很有帮助。