我正在运行一个服务,它打开一个端口并接收消息。它通过打开一个端口并在无限循环中监听它来实现。当屏幕关闭几分钟后,我再也收不到任何消息了。
现在,我试图通过询问WakeLock来保持清醒。但这似乎不起作用,消耗大量电池。那么如何保持infite循环运行,也许我如何以最少的电池消耗实现它。
这不是真正的代码,但这是我尝试在待机模式下保持清醒的方式。
MyService{
...
public void startListening(){
new Thread(new Runnable(){
public void run(){
PowerManager mgr = (PowerManager)c.getSystemService(Context.POWER_SERVICE);
final WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ListeningLock");
new Thread(new Runnable(){
public void run(){
wakeLock.acquire()
someClass.infiniteListeningLoop();
wakeLock.release();
}
}).start();
}).start();
}
}
更新
WakeLock不是问题。我会定期发出循环仍在运行的通知以及它已经运行了多少次。所以问题似乎是套接字。我抓住了所有异常,但没有抛出任何异常。可能安卓关闭端口一段时间后没有收到任何东西?