连续方法调用未在广播接收器Android中执行



我有一个广播接收器,它根据AlarmManager计划的时间间隔触发。

现在,比方说,我有一个名为"a"的服务和名为"B"的广播接收器。我的AlarmManager处于服务级别A,计划从该级别调用"B"。

现在,当触发报警时间并调用广播接收器时,"B"中有两个连续的方法调用。这些方法包含在类"A"中,但从"B"调用。

问题是在"B"中只调用了一行代码,并且它不会返回调用下一行代码。我不明白为什么。。。。请帮忙。

代码为"A"类,如下所示:

    int interval = 60 * 1000;
    Calendar now = Calendar.getInstance();
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    intentLocationUpdateAlarm = new Intent(this, B.class);
    pendingIntentLocationUpdateAlarm = PendingIntent.getBroadcast(this, 1919, intentLocationUpdateAlarm, PendingIntent.FLAG_CANCEL_CURRENT);
    manager.set(AlarmManager.RTC_WAKEUP, now.getTimeInMillis()+(interval),
            pendingIntentLocationUpdateAlarm);

在接收器"B"中,如下所示:

 @Override
 public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    //Stop periodic updates here and then start again
    A.getInstance().stopPeriodicUpdate();
    A.getInstance().startPeriodicUpdates();
}

在类B的代码中,执行startPeriodicUpdate的第一个方法调用,但它不会返回执行方法的下一行。

似乎您的stopPeriodicUpdate()方法末尾有return语句,请检查一次,如果是,请删除该语句并使其成为void方法。

无论如何,我建议你使用自己的自定义事件管理器来触发事件,而不是广播管理器来进行更频繁的更新(甚至你也可以尝试像Android EventBus这样的第三方库https://github.com/greenrobot/EventBus)

最新更新