2013-05-31 82 views
0

我正在開發一個非常簡單的android應用程序,設計了5個activites,每個都有自己的RelativeLayout。Android應用程序圖像按鈕的最佳佈局?

1)父母(或家庭) 2-5)家中的孩子,每個孩子都有自己的後退按鈕,調用finish()。

Heres what it the home screen looks like

問題: 我使用圖像資源無處不在,我有壓力測試由家長一遍遍不斷切換到兒童的應用程序。我由於歷史悠久的「虛擬機預算超出」錯誤而失去內存。

我曾嘗試: 我試圖修剪下來我的大多數對象設置爲靜態引用,使他們成爲垃圾時,孩子的活動結束收集到的圖像資料。 我已經安裝了MAT工具來檢查HPROFS轉儲,這非常令人困惑。 我已閱讀有關SoftReferences或WeakReferences和文件緩存技術,但尚未實現它們。

EDITED ...這是我的onDestroy每個兒童活動。

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     // unbind all drawables starting from the first viewgroup 
     unbindDrawables(findViewById(R.id.info_layout)); 
     c2 = null; 
     runnable = null; 
     mFont = null; 
     root = null; 
     myThread = null; 
     myImage = null; 
     v = null; 
     txtCurrentTime = null; 
     common = null; 
     System.gc(); 
     Log.e("Info", "Info destroyed."); 
    } 

ALSO ......所有這些被聲明爲類聲明的開頭私人。他們是否需要聲明爲靜態或其他?

問題: 是否有不同類型的佈局我可以使用,難道不涉及呼籲活動,比如類似TabHost或ViewFlipper完成的東西()...這將阻止我不得不開始新活動並完成它

或者是......的方式,當我要求我的孩子的活動結束(),使一切都被垃圾回收?

歡迎使用XML和/或代碼示例。

我打開要麼,或者可以建議任何其他方式。

謝謝。 裏克

回答

0

如果你從父母反覆切換到孩子那麼你很可能泄漏孩子活動後運行OOM。我會運行一個hprof,並確保你沒有積累孩子活動,如果你試圖找出什麼引用不被釋放,並確保它們在onDestroy中爲null。

當框架有一個指向您的子上下文的指針時,通常會發生這種情況,它不會通過註銷或通過應用程序中的某種循環引用(可能通過非靜態子類)來釋放。

+0

更新的問題與我的onDestroy方法... –

+0

增加,我宣佈所有的人都爲公開的,只有一個有問題的零件 - 他們需要被聲明爲靜態或其他什麼東西? –

相關問題