Android:使用Window.addContentView时清除隐藏视图?

时间:2009-11-19 01:40:09

标签: android

我最近有一些淡入淡出的工作,所以我的“加载”视图是一个占据整个屏幕的ImageView,然后我在主视图(在这种情况下是一个GridView)的顶部淡入。在活动创建中,我打电话:

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视图以减少我的应用程序使用的内存量?这种方法还有其他问题吗?

(长期读者,第一次海报)

1 个答案:

答案 0 :(得分:0)

由于您只是向窗口视图添加了更多内容,因此您的初始loading_foo将占用内存空间,即使它不可见。您必须删除该视图才能清理内存。

如你所说,你把GridView放在loadingscreen的顶部,我假设你在底部使用了FrameLayout ...为了释放内存你应该在gridview完全可见并加载时删除第一个孩子...首先,loadingview可以被垃圾收集并为你释放内存。