0

我有一个正在运行的服务,它打开一个端口并接收消息。它通过打开一个端口并在无限循环中监听它来做到这一点。屏幕关闭几分钟后,我不再收到任何消息。

现在,我尝试通过获取 WakeLock 来保持清醒。但这似乎不起作用并且消耗大量电池。那么我怎样才能保持无限循环运行,也许我如何以最少的电池消耗来实现它。

这不是真正的代码,但这就是我尝试在待机模式下保持清醒的方式。

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 不是问题。我会定期通知循环仍在运行以及它已经运行了多少次。所以问题似乎是套接字。我捕获了所有异常,但没有抛出任何异常。Android可以在一段时间没有收到任何东西后关闭端口吗?

4

0 回答 0