我是一个广播接收器,根据AlarmManager预定的时间间隔触发。
现在,让我们说,我有一个名为“A'和广播接收机命名为' B' 我的AlarmManager在服务等级A,从那里打电话给' B'预定。
现在,当触发闹钟时间并且呼叫广播接收器时,在' B'中有2个连续的方法呼叫。这些方法包含在“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);
在Receiver' 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的第一个方法调用,但它不会返回执行下一行方法。
答案 0 :(得分:0)
似乎是你的stopPeriodicUpdate()方法在最后有return语句,检查一次,如果是这样删除它并使其成为void方法。
无论如何,我建议您使用自己的自定义事件管理器来触发事件而不是广播管理员以进行更频繁的更新(即使您可以尝试第三方库,如Android EventBus https://github.com/greenrobot/EventBus )