2011-09-09 28 views
2

我在我的應用程序中發現了一個問題: 一個場景S1和S2和管理器M;從S1我可以建立和切換到S2和從S2可以得到S1(全部通過經理)。AndEngine內存泄漏

每次當我切換場景我想刪除它之一。

但我發現,如果我切換場景兩個場景存儲在內存中,並在許多開關應用程序崩潰後。

一些僞代碼:

經理:

void build(Scene s){ 
    getEngine().setScene(s); 
    } 

    onLoadScene{ 
    M.build(S1); 
    } 

S1:

onButtonClick{ 
    M.build(S2); 
    } 

S2:

onButtonClick{ 
    M.build(S1); 
    } 

,因爲我覺得當我建立S1連接到S2是dissapeared和 當內存不足時,構建S2,S1消耗和GC必須清除它。

我該如何避免應用程序崩潰?

Thx很多。

回答

2

這不足以幫助您找到內存泄漏的代碼。但我的猜測是你的紋理正在被重新創造,而你的精靈仍然依附於場景。您想要共享並重新使用您的資源。每次調用「新」任何東西時檢查,或者創建一個textureAtlas。在這些情況下,創建一些類來存儲舊實例並重新初始化它們。 Andengine可以對資源非常粘性,除非您可以專門刪除每個引用和依賴關係。 但是在大多數遊戲中,你需要的子彈,敵人,BG等等的數量都有限制。因此可以爲每種對象類型設置池並回收它們。你不想做的就是每次你建立新的資產()。