vmpolicy threadpolicy studio android android-strictmode

android - threadpolicy - Se adquirió un recurso en el seguimiento de pila adjunto pero nunca se liberó. Consulte java.io.Closable para obtener información sobre cómo evitar las fugas de recursos.



strictmode threadpolicy (6)

El mismo mensaje de error también aparece cuando hay un problema en AndroidManifest.xml . Para mí, la etiqueta <activity> salió accidentalmente de <application>

Esto es correcto:

<application ... > ... <activity ... /> </application>

Esto dará como resultado "Se adquirió un recurso en el seguimiento de pila adjunto pero nunca se liberó" al iniciar la actividad:

<application ... > ... </application> <activity ... />

estoy recibiendo este mensaje en logcat Se adquirió un recurso en el seguimiento de pila adjunto pero nunca se publicó. Consulte java.io.Closable para obtener información sobre cómo evitar las fugas de recursos. dónde buscar fugas y qué significa "Ver java.io.Para cerrar"


Esto me sucedió al iniciar una segunda actividad de otra actividad cuando no declaré la segunda actividad en Application.mk.


Mi error fue causado por habilitar el modo estricto. Cuando estaba haciendo redistribuciones en un teléfono de prueba usando adb, algunos recursos no se cerraron correctamente.

He "arreglado" el error eliminando deathPenalty del modo estricto:

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectAll() .penaltyLog() // .penaltyDeath() .build());


Para mí, el problema ocurrió porque onBackPressed() el método onBackPressed() sin llamar al super()

@Override public void onBackPressed() { //some coding here super.onBackPressed(); }


si ves algo como

10-12 16:46:44.719 2710-2719/? E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. 10-12 16:46:44.719 2710-2719/? E/StrictMode: java.lang.Throwable: Explicit termination method ''end'' not called 10-12 16:46:44.719 2710-2719/? E/StrictMode: at dalvik.system.CloseGuard.open(CloseGuard.java:184) 10-12 16:46:44.719 2710-2719/? E/StrictMode: at java.util.zip.Inflater.<init>(Inflater.java:82) 10-12 16:46:44.719 2710-2719/? E/StrictMode: at com.android.okio.GzipSource.<init>(GzipSource.java:57) 10-12 16:46:44.719 2710-2719/? E/StrictMode: at com.android.okhttp.internal.http.HttpEngine.initContentStream(HttpEngine.java:490)

en su stacktrace, hay un error conocido en las versiones anteriores de okhttp que puede evitar al forzar el uso de una versión más reciente en su archivo de gradle.

compile ''com.squareup.okhttp3: okhttp: 3.2.0''

Eso solucionó un problema muy similar para mí al menos.


Eso significa que has abierto algo pero nunca los cierras. Closable tiene un método de close que debe llamar para liberar los recursos asociados con el componente cuando ya no lo necesite.

Para buscar la fuga, puede probar MAT , a menudo la uso para encontrar fugas de memoria (datos estáticos que contienen una referencia a Actividad, etc.).