我目前在Android应用程序中监听Wi-Fi的更改,并且大多数情况下它可以正常工作,但是当用户有设备处于空闲/睡眠模式时,就像屏幕空白时一样。如果他们走进Wi-Fi区域并自动连接,则在用户打开屏幕之前我没有得到意图。这不好,导致我的申请投诉。任何人都可以帮助解决为什么在屏幕醒来之前我没有得到意图?
这是我的代码:
BroadcastReciever:
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%工作,并且当屏幕连接时是空白我没有意图,是否有人意识到我失踪的东西?
答案 0 :(得分:1)
实际上Android中的WakeLocks,WIFI和WIFILocks存在很多问题。首先检查您的WIFI政策,看看屏幕变暗时会发生什么。它必须是“永远在线”。然后尝试获取WIFI锁以防止wifi休眠,因为保持CPU不会导致WIFI关闭。有关示例代码,请参阅:
另请注意,您必须拥有使用WakkeLocks的权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
此区域还有许多其他问题请查看此问题,并参考Google问题跟踪器了解WIFI问题,它可以帮助您节省大量时间并为您节省时间: