2014-08-28 36 views

回答

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) 
在你的堆棧跟蹤

,有中老年一個已知的bug okhttp的版本,你可以通過強制在你的gradle文件中使用更新的版本來避免。

編譯 'com.squareup.okhttp3:okhttp:3.2.0'

,至少解決了一個非常類似的問題對我來說。

0

我的錯誤是由啓用嚴格模式引起的。當我在使用adb的測試電話上進行重新部署時,某些資源未正確關閉。

我 「固定」 的誤差通過從嚴格模式除去deathPenalty:

  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 
        .detectAll() 
        .penaltyLog() 
//     .penaltyDeath() 
        .build()); 
相關問題