I am getting this message in logcat
A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
Where do I look for the leak and what does it mean by " See java.io.Closeable".
I am getting this message in logcat
A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
Where do I look for the leak and what does it mean by " See java.io.Closeable".
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.
The same error message also shows up when there is a problem in AndroidManifest.xml. For me, the <activity> tag accidentally went out of <application>
This is correct:
<application ... >
...
<activity ... />
</application>
This will result in "A resource was acquired at attached stack trace but never released" when starting the activity:
<application ... >
...
</application>
<activity ... />
This has happened to me while launching a second activity from another activity when I did not declare the second activity in Application.mk.
For me, it seems that is something related to emulator, as it disappeared by changing to another emulator. you can test on real device.
My error was caused by enabling the strict mode. When I was doing redeployments on a test phone using adb, some resources were not closed correctly.
I "fixed" the error by removing deathPenalty from the strict mode:
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
// .penaltyDeath()
.build());