У меня утечка памяти в приложении для Android. Это простой музыкальный плеер. В нижней части экрана у меня есть TextView, который я использую для отображения прошедшего времени. Он обновляется в нижеприведенном потоке.Android runOnUiThread, вызывающий утечку памяти
Каждый раз, когда я меняю ориентацию, размер кучи увеличивается. От взгляда на обновления кучи DDMS, похоже, что моя деятельность не является сборкой мусора. Если, однако, я прокомментирую 6 строк, как я сделал ниже, GC держит кучу в довольно последовательном размере. Не могли бы вы сообщить мне, что это такое?
private void updateTimerAndSeekBar() {
Thread updater = new Thread() {
SeekBar seekbar = (SeekBar) findViewById(R.id.seekBar1);
TextView timer = (TextView) findViewById(R.id.currentTime);
public void run() {
while (mediaPlayer.isPlaying()) {
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// timer.setText(msToMins(mediaPlayer.getCurrentPosition()));
// }
// });
try {
seekbar.setProgress(mediaPlayer.getCurrentPosition());
sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
updater.start();
}
Создайте кучу кучи через DDMS и используйте MAT, чтобы определить, что удерживает на что. – CommonsWare
Строки, которые вы прокомментировали, на самом деле не имеют эффекта, так как активность уже поддерживается живым потоком. – zapl