我正在创建一个具有后台服务的应用程序,该服务使用getRssi()
方法不断获取WiFi RSSI,并根据值决定应该执行的操作。
服务运行正常,但是,当屏幕被锁定时,服务会停止更新RSSI的值,相反,它会在锁定屏幕之前卡住最后读取的值。
我试着拿着partial WakeLock
,但不幸的是它没有效果。
在服务的OnStartCommand
中,我添加了唤醒锁,如下所示:
wifi =(WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE);
PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyLock");
wakeLock.acquire();
info = wifi.getConnectionInfo();
RSSI = info.getRssi();
System.out.println(RSSI);
我在清单中添加了唤醒锁权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
有没有人有类似的问题?
这背后的原因是什么?