2014-09-22 35 views
2

我已根據Google Developers page on that subject在應用上設置了應用內結算v3。我非常遵循TrivialDrive示例應用程序的相同方法和步驟(可以看到,例如,here)。這一切工作正常(查詢庫存,購買,物品消耗等工作),但我一直面臨一些相當惱人的內存泄漏。使用IabHelper時的內存泄漏(應用內結算v3)

如果我切換手機的方向幾次,導致垃圾收集,做一個HPROF轉儲和使用MAT分析,我可以看到,一堆Threads仍然活着踢,而他們不應該。

Android IabHelper causing Memory Leak?

這不是大量的內存,但它仍然在我用IabHelper任何Activity積累......是的,我在我的配置實例IabHelper(地獄,甚至成立了聽衆爲空.. )在我的活動的onDestroy()

@Override 
protected void onDestroy() { 
    super.onDestroy(); 

    (...) 

    if (mHelper != null) 
     mHelper.dispose(); 

    mHelper = null; 
    mGotInventoryListener = null; 
    mPurchaseFinishedListener = null; 
} 

是否有人有同樣的問題?任何人都可以指出我正確的方向來解決這個問題嗎?預先感謝您的任何意見。

回答

2

撞我的頭靠在牆上,徒勞地在我的代碼找了一遍又一遍,並做一些進一步的研究之後,我發現這個問題:

Thread objects not garbage collected after being finished

顯然,事實證明這些線程AREN垃圾收集器收集的內容與內存泄漏無關,而是由於我在debug模式下運行應用程序。在run模式下運行應用程序(仍然在Eclipse中)時,會發生線程垃圾回收。

此外:

「調試器和垃圾收集器正在鬆散集成 的VM保證任何對象調試器是知道的是沒有收集到調試器斷開這可以 結果後 垃圾。例如,如果調試器看到一個正在運行的線程,那麼即使 線程終止後,關聯的Thread對象也不會被垃圾收集。「

(如由@ptoinson指出http://developer.android.com/tools/debugging/index.html, 的底部)