2012-03-20 63 views
1

我有一个BroadcastReceiver在发送SMS之后侦听“SMS_SENT”Intent。据我所知,SMSManager确实提供了一个唤醒锁,以便它可以发送短信(我没有任何证据,但常识会告诉我这是事实)。Android - 我需要一个WakeLock吗?

但是,我的BroadcastReceiver调用一个WakefulIntentService,它使用自己的唤醒锁定,所以这没问题。但是,接收机本身呢?我是否需要创建一个新的唤醒锁,以便我可以保证WakefulIntentService被调用?或者我可以安全地忽略这一点,就像可以使用AlarmManager的接收器一样?

感谢

回答

2

但是,接收机本身呢?我是否需要创建一个新的唤醒锁,以便我可以保证WakefulIntentService被调用?

一旦您的接收器呼叫​​,WakefulIntentService引擎获取WakeLock

只要你打电话之前没有做很多工作,你应该没问题。

+0

谢谢。广播接收器只是具有一个switch语句,用于为唤醒意图服务的调用相应地在intent中填充extras。这听起来可以接受吗? – jtnire 2012-03-20 23:46:24

+0

@jtnire:这本身应该增加一点开销。我不知道SMS广播过程是否有自己的'WakeLock'。可以想象,在SMS发送之前,设备可能会在睡眠中睡着,尽管这看起来不太可能,而且无论如何你都无法做到这一点。 – CommonsWare 2012-03-20 23:56:59

1

我觉得你并不需要创建一个唤醒锁定等待响应。这是我的想法。首先,假设您的广播接收器出于某种原因没有收到广播。那么你将有一个活跃的唤醒锁。其次,在我看来,广播应该激活你的手机(因为我从来没有见过创建wakelock的短信应用示例)。所以以我的观点来看,你不需要创建一个唤醒锁。