В настоящее время я слушаю изменения в Wi-Fi в своем приложении для Android, и по большей части он работает нормально, однако, когда у пользователя есть устройство, оно находится в режиме ожидания/спящего режима, например, когда экран пустой. Если они входят в зону 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, чтобы убедиться, что я получаю процессорное время следующим образом:
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "CicCPULock");
wl.acquire();
Однако даже при всем этом я никогда не получаю сообщение об изменении намерения подключения, если экран пуст, он работает в 100% случаев, когда экран включен, если пользователь заходит в сеть Wi-Fi и подключается, когда экран пуст. не удается понять намерение, кто-нибудь знает, что я что-то упускаю?