我目前在我的 Android 应用程序中监听 Wi-Fi 的变化,并且在大多数情况下它工作正常,但是当用户有设备时,设备处于空闲/睡眠模式,就像屏幕空白时一样。如果他们走进 Wi-Fi 区域并自动连接,在用户打开屏幕之前我不会明白意图。这不好,并导致对我的应用程序的投诉。任何人都可以帮助我为什么在屏幕唤醒之前我没有得到意图?
这是我的代码:
广播接收器:
public class WifiReciever extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
String action = arg1.getAction();
if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION)){
return;
}
if (!noConnectivity)
{
if (aNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI)
{
//Handle connected case
Log.e("E", "GOT CONNECTION");
}
}
else
{
if (aNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI)
{
//Handle disconnected case
Log.e("E", "LOST CONNECTION");
}
}
}
如果一个正在运行的服务我把它作为一个变量:
WifiReciever mConnectionReceiver;
我通过以下调用启动和停止服务中的接收器:
private synchronized void startMonitoringConnection()
{
IntentFilter aFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mConnectionReceiver, aFilter);
}
private synchronized void stopMonitoringConnection()
{
unregisterReceiver(mConnectionReceiver);
}
我调用 WakeLock 以确保我得到这样的 CPU 时间:
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "CicCPULock");
wl.acquire();
但是,即使屏幕为空白时我从未收到连接更改意图,但如果我用户走进 Wi-Fi 区域并在屏幕为空白时连接,它在屏幕开启的情况下 100% 工作我没有得到意图,有人知道我错过了什么吗?