Застрял в «Сброс памяти, приложение замерзнет. Brrr. "Сообщение [android]


Answers

Вы должны добавить RefWatcher в свой фрагмент так же, как то, что описано на странице проекта: https://github.com/square/leakcanary

LeakCanary.install () возвращает предварительно сконфигурированный RefWatcher. Он также устанавливает ActivityRefWatcher, который автоматически обнаруживает, что активность протекает после вызова Activity.onDestroy ().

public class ExampleApplication extends Application {

  public static RefWatcher getRefWatcher(Context context) {
    ExampleApplication application = (ExampleApplication) context.getApplicationContext();
    return application.refWatcher;
  }

  private RefWatcher refWatcher;

  @Override public void onCreate() {
    super.onCreate();
    refWatcher = LeakCanary.install(this);
  }
}

Вы можете использовать RefWatcher для отслеживания утечек фрагментов:

public abstract class BaseFragment extends Fragment {

  @Override public void onDestroy() {
    super.onDestroy();
    RefWatcher refWatcher = ExampleApplication.getRefWatcher(getActivity());
    refWatcher.watch(this);
  }
}

Кроме того, если вы хотите получить кучу кучи при утечке памяти, просто откройте Android Device Monitor из Android Studio и выберите вкладку «Проводник». В каталоге / mnt / shell / emulated / 0 / Download / leakcanary / detected_leaks вы найдете все файлы дампа кучи.

Question

Я пытаюсь использовать LeakCanary для обнаружения утечек памяти в моем приложении, но это не идет дальше сообщения «Сброс памяти, приложение замерзнет. Brrr». Я ждал около 20 минут или около того, но никаких изменений. Такое же поведение на этих устройствах: 1. Asus fonepad 8 (Android 5.0) 2. Sony Xperia SP (Android 5.1.1 CM 12.1 custom) 3. HTC Desire C (Android 4.4 CM 11 custom)

Я делал все, как советовал:

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
  }
}