Android 清单接收者如何与其他对象交互?

Android 清单接收者如何与其他对象交互?,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我有一个清单注册的BroadcastReceiver,它接收来自AlarmManager的重复警报,我想在收到警报时通知服务,我考虑将一个侦听器设置为BroadcastReceiver,并按如下方式调用侦听器: public class HeartbeatAlarmReceiver extends BroadcastReceiver { private OnAlarmReceivedListener mListener; public interface OnAlarmRec

我有一个清单注册的BroadcastReceiver,它接收来自AlarmManager的重复警报,我想在收到警报时通知服务,我考虑将一个侦听器设置为BroadcastReceiver,并按如下方式调用侦听器:

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中。。。方法将包含任何数据的意图作为意图附加项传递。出于某种原因,我必须使用显式意图来启动接收器。为什么?出于安全考虑。因为隐式意图可以由其他应用程序发送。