По таймеру слежу за сообщениями от сокет сервера. Со временем программа вылетает. Помогает только периодический реконект сокета. Если закоментировать строку int r = mSocket.getInputStream().read(buf); то ошибки нет. Подскажите пожалуйста. Опыта в java нет совсем. Да и еще замечено что на новом телефоне с Androin 7 не вылетает. Понимаю что идет утечка памяти. Грешил на byte buf[] = new byte[1 * 512]; или new Thread Но нет. Именно int r = mSocket.getInputStream().read(buf)
Вот сам код:
new CountDownTimer(1000 * 60 * 60, 10) {
byte buf[] = new byte[1 * 512];
public void onTick(long millisUntilFinished) {
new Thread(new Runnable() {
@Override
public void run() {
try {
int r = mSocket.getInputStream().read(buf);
receiveSocket = new String(buf, 0, r, "cp1251");
Log.d("Dima", receiveSocket);
} catch (Exception e) {
Log.e("dim", e.getMessage());
}
}
}).start();
}
public void onFinish() {
this.start();
}
}.start();
Вобщем сейчас так:
new CountDownTimer(1000 * 60 * 60, 10) {
byte buf[] = new byte[1 * 512];
public void onTick(long millisUntilFinished) {
try {
Log.d("Dima", "123");
int r = mSocket.getInputStream().read(buf);
String str = new String(buf, 0, r, "cp1251");
Log.d("Dima", str);
} catch (Exception e) {
}
}
public void onFinish() {
this.start();
}
}.start();
Сейчас не вылетает. Но и из сокета не читает. Коннект с сервером есть. В дебаг строка "123" идет, но переменная str нет. Ошибок не видать. Очень жду помощи
Сборка персонального компьютера от Artline: умный выбор для современных пользователей