A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks

后端 未结 6 1773
心在旅途
心在旅途 2020-11-29 11:18

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 l

相关标签:
6条回答
  • 2020-11-29 11:22

    This has happened to me while launching a second activity from another activity when I did not declare the second activity in Application.mk.

    0 讨论(0)
  • 2020-11-29 11:29

    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).

    0 讨论(0)
  • 2020-11-29 11:33

    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();
    }
    
    0 讨论(0)
  • 2020-11-29 11:43

    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.

    0 讨论(0)
  • 2020-11-29 11:43

    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());
    
    0 讨论(0)
  • 2020-11-29 11:46

    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 ... />
    
    0 讨论(0)
提交回复
热议问题