Android 应使用服务接收器还是广播接收器构建警报?

Android 应使用服务接收器还是广播接收器构建警报?,android,service,broadcastreceiver,alarm,Android,Service,Broadcastreceiver,Alarm,我想建立一个报警应用程序。我看过一些例子,其中一些使用服务,一些使用广播接收器。用户将设置警报,然后当警报关闭时,他们必须在警报关闭前执行某些操作,如求解数学方程或扫描NFC标签。我应该使用哪一个?如果您使用带有\u WAKEUP警报的AlarmManager,则必须将挂起内容路由到广播接收器。安卓唯一能保证的是,如果您使用的是广播接收器,安卓会让设备保持足够长的唤醒时间,以便onReceive()完成。任何其他的,所有的赌注都没有了 如果您想做的工作需要几毫秒以上的时间,请让Broadcast

我想建立一个报警应用程序。我看过一些例子,其中一些使用服务,一些使用广播接收器。用户将设置警报,然后当警报关闭时,他们必须在警报关闭前执行某些操作,如求解数学方程或扫描NFC标签。我应该使用哪一个?

如果您使用带有
\u WAKEUP
警报的
AlarmManager
,则必须将
挂起内容
路由到
广播接收器
。安卓唯一能保证的是,如果您使用的是
广播接收器
,安卓会让设备保持足够长的唤醒时间,以便
onReceive()
完成。任何其他的,所有的赌注都没有了


如果您想做的工作需要几毫秒以上的时间,请让
BroadcastReceiver
掉头并将控制权传递给服务,该服务可以在后台线程上完成其工作。您可能希望为此使用;如果没有,您需要管理自己的
唤醒锁
,以确保设备保持唤醒状态,直到服务完成其工作。

如果您使用
AlarmManager
唤醒
警报,则必须将
挂起内容
路由到
广播接收器
。安卓唯一能保证的是,如果您使用的是
广播接收器
,安卓会让设备保持足够长的唤醒时间,以便
onReceive()
完成。任何其他的,所有的赌注都没有了


如果您想做的工作需要几毫秒以上的时间,请让
BroadcastReceiver
掉头并将控制权传递给服务,该服务可以在后台线程上完成其工作。您可能希望为此使用;如果没有,您需要管理自己的
WakeLock
,以确保设备在服务完成其工作之前保持唤醒状态。

我有点困惑。您是说_WAKEUP仅在发送到广播接收器时有效,还是说_WAKEUP可以发送到服务,但无法保证设备保持清醒足够长的时间以执行任何有用的操作?无论如何,+1链接到唤醒的服务。@ EdWordFalk:嗯,你的第二个声明更准确,虽然我认为它们或多或少是等价的。如果不可靠,
\u WAKEUP
有什么意义?没错,虽然可以说服务最终会执行,但下次设备真正唤醒时。我有点困惑。您是说_WAKEUP仅在发送到广播接收器时有效,还是说_WAKEUP可以发送到服务,但无法保证设备保持清醒足够长的时间以执行任何有用的操作?无论如何,+1链接到唤醒的服务。@ EdWordFalk:嗯,你的第二个声明更准确,虽然我认为它们或多或少是等价的。如果它不可靠,那么唤醒有什么意义呢?没错,虽然可以说服务最终会执行,但下次设备真正唤醒时。