Я получаю это сообщение в logcat Ресурс был получен при подключенной трассировке стека, но не был выпущен. См. Java.io.Closeable для получения информации об избежании утечки ресурсов. где искать утечку и что это означает «См. Java.io.Closeable»Ресурс был получен при подключенной трассировке стека, но не был выпущен. См. Java.io.Closeable для получения информации об избежании утечки ресурсов.
ответ
Это означает, что вы что-то открыли, но никогда не закрывали их. Closable
имеют метод close
, который вы должны вызывать для освобождения ресурсов, связанных с компонентом, когда он вам больше не нужен.
Чтобы найти утечку, вы можете попробовать MAT
, я часто использую его для поиска утечек памяти (статические данные, содержащие ссылку на Activity и т. Д.).
Такое же сообщение об ошибке также появляется при возникновении проблемы в AndroidManifest.xml
. Для меня <activity>
тега случайно вышел из <application>
Это правильно:
<application ... >
...
<activity ... />
</application>
Это приведет к «Ресурс был приобретен в прикрепленной трассировке стеки, но никогда не выпускался» при запуске деятельности:
<application ... >
...
</application>
<activity ... />
Это случилось со мной во время запуска второго действия на другой вид деятельности, когда я не объявляю второй активности в Application.mk.
Для меня проблема возникла потому, что отменяют метод onBackPressed()
без вызова super()
@Override
public void onBackPressed() {
//some coding here
super.onBackPressed();
}
если вы видите что-то вроде:
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'
, что решил очень похожую проблему для меня по крайней мере.
Моя ошибка была вызвана включением строжайшего режима. Когда я делал перераспределения на тестовом телефоне с помощью adb, некоторые ресурсы были закрыты неправильно.
I "фиксированный" ошибка при удалении deathPenalty от строгого режима:
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
// .penaltyDeath()
.build());