Atascado en "Vaciar memoria, la aplicación se congelará. Brrr. "Mensaje
Estoy tratando de usar LeakCanary para detectar fugas de memoria en mi aplicación, pero no va más allá del mensaje "Vaciar memoria, la aplicación se congelará. He estado esperando unos 20 minutos o así, pero no hay cambios. El mismo comportamiento en estos dispositivos: 1. Asus fonepad 8 (Android 5.0 stock) 2. Sony Xperia SP (Android 5.1.1 CM 12.1 personalizado) 3. HTC Desire C (Android 4.4 CM 11 personalizado)
Hice todo según lo aconsejado en la instrucción:
- Error de apertura del archivo HPROF
- Java - android UDP falta de fiabilidad
- Detección de fugas de memoria nativas en el código JNI de Android
- Investigación de LeakCanary: com.motorola.pixelpipe.PixelPipeTarget.mContext
- Cómo utilizar Leak Canary
public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); LeakCanary.install(this); } }
- ¿Por qué se trata de una pérdida de memoria
- Leyendo LeakCanary Log
- ¿Cómo entender que muestra LeakCanary?
- Pocas pérdidas de memoria en Facebook SDK
- Gestión de memoria HttpClient
- Problema con la descarga de varios archivos con AsyncTask
- LeakCanary detecta pérdida de memoria de Android WebView
- Aplicación de Android con límite de tamaño de memoria
Si estás en Android M necesitas conceder permiso de "escribir almacenamiento externo" o perder canary colgará durante mucho tiempo con el mensaje brrr. En el cajón de aplicaciones, haga clic en el lanzador de canary (como si fuera a desinstalarlo) y arrastre hasta "info de la aplicación" y active el permiso de almacenamiento.
Debería agregar el RefWatcher a su fragmento así como lo que se describe en la página del proyecto: https://github.com/square/leakcanary
LeakCanary.install () devuelve un RefWatcher preconfigurado. También instala un ActivityRefWatcher que detecta automáticamente si una actividad está goteando después de que se haya llamado 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); } }
Puede utilizar el RefWatcher para ver si hay fugas de fragmentos:
public abstract class BaseFragment extends Fragment { @Override public void onDestroy() { super.onDestroy(); RefWatcher refWatcher = ExampleApplication.getRefWatcher(getActivity()); refWatcher.watch(this); } }
Además, si desea obtener el volcado de pila cuando se produce una fuga de memoria, abra el Android Device Monitor de Android Studio y seleccione la pestaña "Explorador de archivos". En el directorio / mnt / shell / emulated / 0 / Download / leakcanary / detected_leaks, encontrará todos los archivos de volcado heap.
- La prueba Espresso falla con NoActivityResumedException a menudo
- Asynctask vs. Thread vs Services vs Loader