2009-11-19 42 views
2

我最近得到了一些淡入淡出的東西,所以我的「加載」視圖是一個ImageView,它佔據了整個屏幕,然後在主視圖(在這種情況下是一個GridView)淡入其頂部。在活動中創造的,我稱之爲:Android:在使用Window.addContentView時清除隱藏視圖?

setContentView(R.layout.loading_foo); 

那麼當裝載的AsyncTask完成後,我撥打以下:

LayoutInflater inflater = LayoutInflater.from(getApplicationContext()); 
GridView gridview = (GridView) inflater.inflate(R.layout.foo, null); 

//fade in the view as it's shown 
gridview.setAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); 

//populate the items adapter 
gridview.setAdapter(new FooGridAdapter(apps)); 

//now overlay the gridview on top of the loading_springboard page 
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); 
getWindow().addContentView(gridview, layoutParams); 

我需要做什麼特別清理loading_foo視圖減少我的應用程序使用的內存量?這種方法的其他問題?

(很長一段時間的讀者,首次海報)

回答

0

如你只需要添加更多的內容到窗口視圖,你最初的loading_foo會佔用內存空間,即使其不可見。您必須刪除該視圖才能清理內存。

正如你所說的,你將GridView放在加載屏幕上,我假設你在底部使用了一個FrameLayout ...爲了釋放內存,當gridview完全可見和加載時,應該刪除第一個孩子。 。首先可以通過垃圾收集和爲你騰出內存。

+0

我沒有使用FrameLayout(請參閱getWindow()。addContentView調用),但將此流程重新使用爲frameLayout(然後在GridView可見時調用removeView)是否正確。謝謝。 – Eric

相關問題