【问题标题】:delay in alarmmanager .. when two alarms exists simultaneously警报管理器中的延迟 .. 当两个警报同时存在时
【发布时间】:2012-05-16 13:34:41
【问题描述】:

我已安排多个警报管理器在不同时间发送意图。 我注意将唯一 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
        }}

问题是,我的警报延迟了。有延迟的原因吗?

【问题讨论】:

  • 哦,Stakc Overfloe 的用户为什么不给我解决方案?

标签: android alarmmanager


【解决方案1】:

据我所知,当处理器的任务负担很重时,Alarm MANager 无法在正确的时间触发。

换句话说,广播接收器没有按时收到意图,因为警报管理器将广播添加到延迟发送的队列中..

准确的信息很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多