У меня есть сервер ПК и Android-клиент;Мой Android-клиент запускает сокет-соединение с сервером.
Пока я подключен к серверу, я также получаю данные с сервера на Android-клиент;
Вот мой код:
Socket socket = null;
DataOutputStream out = null;
DataInputStream in = null;
InputStream inputStream = null;
OutputStream outputStream = null;
...
public void connectToTCP()
{
try
{
socket = new Socket(HOST_ADDRESS, PORT);
socket.setSoTimeout(30000);
outputStream = socket.getOutputStream();
out = new DataOutputStream(outputStream);
inputStream = socket.getInputStream();
in = new DataInputStream(inputStream);
Log.e("TCP-", "Connected");
while (socket.isConnected()){readBytes();}
}
catch (UnknownHostException e)
{
Log.e("Error in tcp connection","Unknown Host");
}
catch (IOException e)
{
Log.e("Error in tcp connection", "Couldn't get I/O for the connection");
}
}
public void readBytes() throws IOException
{
if (in.available() > 0)
{
byte[] buffer = new byte[in.available()];
if (buffer.length > 0)
{
if (mListener != null)
{
int numberOfBytes = in.read(buffer);
mListener.tcpConnectionDataReceived(buffer, numberOfBytes);
}
}
}
}
но моя проблема в производительности.Я протестировал код на устройстве и заметил (из диспетчера задач), что приложение потребляет много ресурсов (загрузка ЦП превышает 50%), но когда я прекращаю чтение из сокета, удаляя его, пока цикл while (socket.isConnected()){readBytes();}
Использование ЦП становитсяменее 1%.
Есть идеи, чтобы решить эту проблему?