A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks
That means you have opened something but never close them.Closable
have a method close
which you must call to release the resources associated with the component when you no longer need it.
To look for the leak, you can try MAT
, I often use it to find memory leaks(static data holding a reference to Activity, etc).
For me the problem happened because I was overriding the method onBackPressed()
without calling the super()
@Override
public void onBackPressed() {
//some coding here
super.onBackPressed();
}
if you see something like:
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)
in your stacktrace, there is a known bug in older versions of okhttp that you can avoid by forcing the use of a newer version in your gradle file.
compile 'com.squareup.okhttp3:okhttp:3.2.0'
that solved a very similar problem for me at least.