Android 当手机处于睡眠状态时广播接收器行为
我不太确定手机处于睡眠状态时,在清单中注册并通过Android 当手机处于睡眠状态时广播接收器行为,android,broadcastreceiver,Android,Broadcastreceiver,我不太确定手机处于睡眠状态时,在清单中注册并通过PackageManager启用的BroadcastReceiver的行为是什么。出现这个问题是因为我需要一个注册的接收器,用于从WifiManager <receiver android:name=".receivers.ScanResultsReceiver" android:enabled="false" > <intent-filter> <action android:
PackageManager
启用的BroadcastReceiver
的行为是什么。出现这个问题是因为我需要一个注册的接收器,用于从WifiManager
<receiver
android:name=".receivers.ScanResultsReceiver"
android:enabled="false" >
<intent-filter>
<action android:name="android.net.wifi.SCAN_RESULTS" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
动态注册的接收者-是否有任何地方列出这些意图
我不太确定当手机处于睡眠状态时,在清单中注册并通过PackageManager启用的BroadcastReceiver的行为是什么
大多数广播不会唤醒设备
当手机进入睡眠状态时,哪些广播可以保证唤醒听筒(如在很长一段时间内保持孤独)
我怀疑你会在某处找到一份明确的清单。我能回忆起的唯一适合您描述的广播是收到的SMS\u
,以及通过AlarmManager
和广播PendingEvent
触发的任何广播
并在onReceive()运行时保持手机处于唤醒状态
有可能你收到的短信有这种行为,但我不能确定。AlarmManager
场景确实如此
(当然,这不应该太长,以避免ANR)
它需要比这个短得多,因为如果你碰巧有前台活动,它会冻结你的UI。任何超过几毫秒的时间都需要委托给具有后台线程的服务,例如myWakefulIntentService
作为奖励,我最近了解到,一些仅标有FLAG_RECEIVER_REGISTERED_的意图只会传递给动态注册的接收者——有没有列出这些意图的地方
不,在源代码之外。我想到的包括:ACTION\u SCREEN\u ON
,ACTION\u SCREEN\u OFF
,和ACTION\u电池更换了
,Uh-oh-所以我的接收器注册接收了android.net.wifi.SCAN\u结果
和android.net.wifi.wifi状态改变了
不会被唤醒?(接收器在WakefulIntentService中启用,由AlarmManager唤醒的接收器启动-此部分正常工作)。我会持有一个锁,但一旦服务启用(扫描结果)接收器,它就会死亡,当WIFI_状态更改(启用)时,(扫描结果)接收器会再次启动,然后当扫描结果可用时。@Mr_和Mrs_D:如果设备进入睡眠状态,WIFI也会进入睡眠状态,因此,如果有未完成的扫描,我不知道预期的行为是什么。我确实询问了a关于getScanResults()
-但是在启用(ScanResults)接收器的唤醒服务中,我也获得了wifilock(类型为WIFI\u MODE\u scan\u ONLY
)(在我更改(启用)WIFI\u状态后)在ScanResults接收器中,由于wifi锁定在禁用wifi的情况下毫无意义,AFAIK)-有时确实有效-但这一切都取决于接收器获得wifi状态和结果的广播-使用超时锁定是否提供了一种解决方法?他们会让设备保持清醒直到超时,还是在我的进程被终止(很可能是在我的服务完成执行后)时被清除@Mr_and_Mrs_D:你在WiFi方面比我迄今为止游荡得更深。由于操作系统版本或制造商对源代码的更改,这是一个未记录的行为区域,可能会对您造成伤害。“他们是让设备保持清醒直到超时,还是在我的进程被终止(很可能是在我的服务完成执行后)时被清除”--好吧,如果进程终止,不管超时,他们都会消失,但我没有尝试测试这一理论。