Android 清单接收者如何与其他对象交互?
我有一个清单注册的BroadcastReceiver,它接收来自AlarmManager的重复警报,我想在收到警报时通知服务,我考虑将一个侦听器设置为BroadcastReceiver,并按如下方式调用侦听器:Android 清单接收者如何与其他对象交互?,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我有一个清单注册的BroadcastReceiver,它接收来自AlarmManager的重复警报,我想在收到警报时通知服务,我考虑将一个侦听器设置为BroadcastReceiver,并按如下方式调用侦听器: public class HeartbeatAlarmReceiver extends BroadcastReceiver { private OnAlarmReceivedListener mListener; public interface OnAlarmRec
public class HeartbeatAlarmReceiver extends BroadcastReceiver {
private OnAlarmReceivedListener mListener;
public interface OnAlarmReceivedListener {
/**
* Callback to call when a heart beat alarm received.
*/
public void onHeartBeatAlarmReceived();
}
public HeartbeatAlarmReceiver(OnAlarmReceivedListener listener) {
mListener = listener;
}
@Override
public void onReceive(Context context, Intent intent) {
mListener.onHeartBeatAlarmReceived();
}
}
但是,这需要一个带参数的构造函数来设置侦听器,但清单注册的BroadcastReceiver似乎是由默认构造函数启动的。我知道我可以通过提供IntentFilter在代码中注册接收方,但出于某种原因,我必须使用显式Intent来启动接收方,这意味着我必须在清单中声明它。看到了吗?我该怎么办?您有两个选择:
您的广播接收器可以呼叫您的服务。使用context.startServiceintent。
当您为您的闹钟制作Pending帐篷时,您可以直接为服务而不是广播接收器制作。使用PendingEvent.getService。。。
我想在收到警报时通知服务:好的,所以只需调用context.startService。。。在onReceive中。。。方法将包含任何数据的意图作为意图附加项传递。出于某种原因,我必须使用显式意图来启动接收器。为什么?出于安全考虑。因为隐式意图可以由其他应用程序发送。