防止android服务耗尽电池电量

防止android服务耗尽电池电量,android,sockets,service,android-service,Android,Sockets,Service,Android Service,免责声明:这是一个系统设计问题,因为我对其他方法感兴趣;还有一个编码问题,因为我在寻找具体的技术 假设我在ip89.374.52.452和端口7893有一台服务器:所以我使用的是套接字。我想通过android应用程序跟踪/消费该服务器发送的每一条消息。在应用程序运行时跟踪服务器非常简单。但是即使应用程序未运行,我也要跟踪服务器?我该怎么做? 当前解决方案 我正在使用服务跟踪服务器。我使用start\u STICKY启动服务。我似乎遇到的问题是,该服务似乎正在耗尽我的电池。我的评估正确吗?就其本身

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

假设我在ip
89.374.52.452和端口
7893有一台服务器:所以我使用的是套接字。我想通过android应用程序跟踪/消费该服务器发送的每一条消息。在应用程序运行时跟踪服务器非常简单。但是即使应用程序未运行,我也要跟踪服务器?我该怎么做?

当前解决方案

我正在使用服务跟踪服务器。我使用
start\u 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();
                }
            }        
    }    
}

可能是bg服务打了这么多电话。它多久打一次电话你说的“这么多电话”是什么意思?我把插座开着。是否有我不知道的呼叫?呼叫服务器。Http呼叫。我明白你的意思,谢谢。但确切地说,我没有使用http抽象:我直接使用套接字。可能是bg服务调用了这么多调用。它多久打一次电话你说的“这么多电话”是什么意思?我把插座开着。是否有我不知道的呼叫?呼叫服务器。Http呼叫。我明白你的意思,谢谢。但确切地说,我没有使用http抽象:我直接使用套接字。