У меня очень сложное приложение, которое пропускает память. Чтобы отследить утечку, я удалил приложение для запуска в очень простое приложение для Android, которое все еще пропускает активность при навигации к следующему действию. Я обнаружил утечку с помощью анализатора hprof в студии Android. Вся урезанная пусковая активность:Утечка памяти в очень простом приложении для Android
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class HomeTest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnStaffStart = (Button)findViewById(R.id.btnStaffStart);
btnStaffStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent startNewActivityOpen = new Intent(HomeTest.this, StaffMenu.class);
startActivity(startNewActivityOpen);
finish();
}
});
}
}
Когда я перейти к деятельности StaffMenu, анализатор показывает утечку в HomeTest деятельности. Что, если что-нибудь, я делаю неправильно или запускает активность, всегда утечка памяти в Android? Я не получаю сообщение об ошибке OutOfMemory, мне просто не нравится утечка памяти. Приложение не выделяет много памяти, поэтому свободная память очень минимальна даже при урезанной активности (менее 1%).
У меня работает Android 4.2, 4.4 и 5.1.
EDIT Я просто попробовал другое приложение, и оно также просочило активность запуска после перехода к следующему действию. Известный андроид-ошибка ???
Спасибо за ваши комментарии. Было бы легче узнать, что это ошибка в AS. Я уже использую StrictMode, который ничего не обнаружил. –
Я действительно использовал профилировщик памяти MAT, и это оказалось утечкой Bitmap в моем «реальном» приложении. Так спасибо за это. +1; –