2014-08-28 13 views

risposta

11

Ciò significa che hai aperto qualcosa ma non le hai mai chiuse. Closable hanno un metodo close che è necessario chiamare per rilasciare le risorse associate al componente quando non è più necessario.

Per cercare la perdita, è possibile provare MAT, lo uso spesso per trovare perdite di memoria (dati statici contenenti un riferimento all'attività, ecc.).

2

Lo stesso messaggio di errore viene visualizzato anche quando c'è un problema in AndroidManifest.xml. Per me, il tag <activity> andato accidentalmente fuori <application>

Questo è corretto:

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

Questo si tradurrà in "Una risorsa è stata acquisita in allegato traccia dello stack ma mai rilasciato" quando si inizia l'attività:

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

<activity ... /> 
0

Questo è successo a me, mentre il lancio di una seconda attività da un'altra attività quando non mi dichiaro la seconda attività in Application.mk.

5

Per me il problema è accaduto perché ho calpestato il metodo onBackPressed() senza chiamare il super()

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

se si vede qualcosa di simile:

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) 

nel vostro stacktrace, c'è un bug noto in anziani versioni di okhttp che puoi evitare forzando l'uso di una versione più recente nel tuo file gradle.

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

che ha risolto un problema molto simile per me almeno.

0

Il mio errore è stato causato abilitando la modalità rigorosa. Quando eseguivo le ridistribuzioni su un telefono di prova utilizzando adb, alcune risorse non erano state chiuse correttamente.

I "fisso" l'errore rimuovendo deathPenalty dalla modalità rigorosa:

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