你的位置:首页 > 操作系统

[操作系统]android:布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!


1.布局优化

首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayout,因为RelativeLayout的功能比较复杂,它的布局需要花费

风度哦的CPU实际。

布局优化的另一个手段就是采用<include>,<merge>,<viewstub>标签。<include>主要用于布局重用,<include>,<merge>标签一般配合使用,他可以减少布局的层级,而<viewstub>泽提供了按需加载的功能,需要

时才会将<viewstub>中的布局加载到内存。这提高了程序的初始化效率。下面介绍下他们的使用方法。

<include> :在你的根布局里面添加<include layout="@layout/main_portals" />就行,然后main_portals布局里

<merge

//自己按需求添加view

</merge>

注意<include>标签只支持android:layout开头的属性,比如android:layout_width,android:layout_height其他属性是不支持的如 android:background,android:id是个特例,如果指定了该属性,同时被包含的布局也指定

了ID,那么以这个ID为主。如果指定了android:layout_*这种属性,那么android:layout_width,android:layout_height就必须存在,否则其他的android:layout_*将无效

<viewstub>:使用方法

<ViewStub
android:id="@+id/hotkey_view_stub"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout="@layout/hotkey_view_layout" />

在你当前的布局里面添加viewstub,hotkey_view_layout为你需要用到此布局时的名称,在activity如果要用到这个布局时,有两种方法加载,当ViewStub被加载时,ViewStub就会被它内部的布局替换掉,这个时候ViewStub就不

再是整个布局的一部分了,而且ViewStub不支持<merge>标签

(ViewStub)findViewById(R.id.hotkey_view_stub).setVisibility(View,visibie); 或者

ViewStub viewStub = (ViewStub)findViewById(R.id.hotkey_view_stub).inflate();