2014-08-28 1 views
21

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

ответ

11

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

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

2

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

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

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

Это приведет к «Ресурс был приобретен в прикрепленной трассировке стеки, но никогда не выпускался» при запуске деятельности:

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

<activity ... /> 
0

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

5

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

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

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

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) 

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

компиляции 'com.squareup.okhttp3: okhttp: 3.2.0'

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

0

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

I "фиксированный" ошибка при удалении deathPenalty от строгого режима:

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

 Смежные вопросы

  • Нет связанных вопросов^_^