Подтвердить что ты не робот

Ресурс был получен при подключенной трассировке стека, но не был выпущен. См. Java.io.Closeable для информации об избежании утечек ресурсов

Я получаю это сообщение в logcat Ресурс был получен при подключенной трассировке стека, но никогда не был выпущен. См. Java.io.Closeable для получения информации об избежании утечки ресурсов., где искать утечку и что это означает "См. Java.io.Closeable"

4b9b3361

Ответ 1

Это означает, что вы что-то открыли, но никогда не закрывали их. Closable имеют метод close, который вы должны вызывать для выпуска ресурсов связанные с компонентом, когда он вам больше не нужен.

Чтобы найти утечку, вы можете попробовать MAT, я часто использую его для поиска утечек памяти (статические данные, содержащие ссылку на Активность и т.д.).

Ответ 2

Для меня проблема возникла из-за того, что я перепробовал метод onBackPressed() без вызова super()

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

Ответ 3

если вы видите что-то вроде:

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)

в вашем стеке, есть известная ошибка в более старых версиях okhttp, которую вы можете избежать, заставляя использовать более новую версию в вашем файле gradle.

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

который решил для меня очень похожую проблему.

Ответ 4

Такое же сообщение об ошибке также появляется при возникновении проблемы в AndroidManifest.xml. Для меня тег <activity> случайно вышел из <application>

Это правильно:

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

Это приведет к тому, что "Ресурс был получен при подключенной трассировке стека, но никогда не был выпущен" при запуске операции:

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

<activity ... />

Ответ 5

Моя ошибка была вызвана включением строгого режима. Когда я делал повторные развертывания на тестовом телефоне с помощью adb, некоторые ресурсы были закрыты неправильно.

Я "исправил" ошибку, удалив deathPenalty из строгой моды:

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

Ответ 6

Это случилось со мной при запуске второго действия из другого действия, когда я не объявлял вторую активность в Application.mk.