保持Android服务不会耗尽电池

时间:2015-11-24 17:45:33

标签: android sockets service android-service

免责声明:这是一个系统设计问题,因为我对替代方法感兴趣;和编码问题,因为我正在寻找具体的技术。

假设我在ip 89.374.52.452和端口7893有一台服务器:所以我使用套接字。我想跟踪/消费该服务器使用Android应用程序发出的每条消息。在应用程序运行时跟踪服务器足够简单。但我想跟踪服务器,即使应用程序没有运行?我该怎么做?

目前的解决方案

我正在使用服务来跟踪服务器。我使用START_STICKY启动服务。我似乎遇到的问题是该服务似乎正在扼杀我的电池。我的评估是对的吗?事实上 - 这本身就是让服务无限期地杀死我的电池吗?或者是别的什么?我的方法是否良好的系统设计?假设我无法控制服务器,因此无法让服务器发送通知:除了

还有其他方法可以跟踪服务器上的活动
 public class MyThread implements Runnable {        
    @Override    
    public void run() {
            try {    
            if(null == socket || !socket.isConnected() || socket.isClosed()){

                InetAddress theServer = InetAddress.getByName(server_IP); 
                socket = new Socket(theServer, serverIPPort);  }

             BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                while ((line = reader.readLine()) != null) {
                    handlers.post(new Runnable() {    
                    public void run() {
                            if (line.length() > 0) {    
                            …//store line    
                        }
                        }    
                });
                }    
        } catch (Exception e) {    
            e.printStackTrace();
                try {
                    if (null != socket) {
                        socket.close();
                        socket=null;    
                }
                } catch (IOException io) {    
                io.printStackTrace();
                }
            }        
    }    
}

0 个答案:

没有答案