私のアプリでは、datagramSocket、1 つのサーバーソケット、およびいくつかのソケットを使用しています。Android デバイスでアプリを実行すると、電話の一部が熱くなり、多くのエネルギーが必要になります。問題の原因はソケットにあると思います。しかし、どの操作が非常にエネルギーを消費するかはわかりません。
新しいソケットを作成するには多くのエネルギーが必要ですか?
Socket so = new Socket();
ss = new ServerSocket( port );
mSocket = new MulticastSocket( port );
サーバーソケットやその他のソケットが不要になった場合は、それらを閉じることが重要ですか。
接続にはエネルギーがかかりますか?
so.connect( new InetSocketAddress(ip, port ), 1000);
また、接続後、接続には多くのエネルギーが必要ですか?(長時間データを送信しない場合は切断した方がよいでしょうか) 大量のソケットは多くのエネルギーを必要としますか?
また、いくつかのスレッドがあります。
メインスレッドと 3 つのバインダースレッドの他に、さらに 3 つのスレッドがあります。
1 番目のスレッド: データグラム ソケットで着信メッセージをリッスンします。
DatagramPacket packet = new DatagramPacket(buffer, buffer. length);
mSocket .receive(packet);
2 番目のスレッド: 複数のソケットで受信メッセージをリッスンします。
try {
if (objectInputStreamList .size() != 0){
if (counter >= objectInputStreamList .size()){
counter = 0;
}
ObjectInputStream ois = objectInputStreamList .get(counter);
Object o = ois.readObject();
if (o instanceof Message){
receive((Message) o);
System.out .println("Message received in Server");
}
}
} catch (SocketTimeoutException soTOE){
counter++;
}
3 番目のスレッド: HTTP 要求を介して、インターネット経由でサーバーにデータを送信します。
スレッドの 1 つが多くのエネルギーを必要としますか?
アプリは、wifi がオフになっている場合や、wifi がオンになっているが wlan に接続されていない場合でも、多くのエネルギーを必要とします。したがって、接続はありません。
この操作のうち、エネルギーを消費するのはどれですか? そして、エネルギーを減らすにはどうすればよいですか?
回答ありがとうございます。