android UI性能优化
提高android性能主要从以下几个方面:
1、减少主线程阻塞
这里主要指在从服务端获取数据的时候,如果有耗时操作,要开辟一个新的线程进行数据获取的操作
2、提高adapter和adapterview性能,主要通过以下三个方面
(1)缓存行布局view
(2)缓存行布局view中的控件
(3)缓存获取的数据
实例代码如下:
adapter 在getView()方法执行的时候,是通过加载list的行布局文件,进行得到对应的view
private View getView(int position, View rootView, ViewGroup parent) throws JSONException{
ViewHolder viewHolder;
//1.缓存行布局文件:在第一次加载行布局文件的时候,contenview会被缓存,在以后就可以直接用缓存view,而不需要加载布局文件
if(rootView==null){
rootView=LayoutInflater.from(getApplicationContext()).inflate(R.layout.workflow_worktodolist_item, parent, false);
TextView workIdView=(TextView)rootView.findViewById(R.id.workflow_worktodolist_item_WorkId);
TextView subjectView=(TextView)rootView.findViewById(R.id.workflow_worktodolist_item_Subject);
TextView stepNameView=(TextView)rootView.findViewById(R.id.workflow_worktodolist_item_StepName);
TextView orderView=(TextView)rootView.findViewById(R.id.workflow_worktodolist_item_OrderNo);
//将行布局文件中的控件加入到ViewHolder中去
viewHolder=new ViewHolder();
viewHolder.setWorkIdView(workIdView);
viewHolder.setSubjectView(subjectView);
viewHolder.setStepNameView(stepNameView);
viewHolder.setOrderView(orderView);
//将控件缓存类加入到contentView中,供下次使用获取
rootView.setTag(viewHolder);
}else{
viewHolder=(View)rootView.getTag();
}
JSONObject obj=data.getJSONObject(position);
viewHolder.getSubjectView.setText(obj.getString("Subject"));
viewHolder.getStepNameView.setText(obj.getString("ActivityModelStepName"));
viewHolder.getWorkIdView.setText(obj.getString("WorkID"));
viewHolder.getOrderView.setText(String.valueOf(position+1)+".");
return rootView;
}
//2.缓存行布局文件中的控件
public static class ViewHolder{
TextView workIdView;
TextView subjectView;
TextView stepNameView;
TextView orderView;
getXX();
setXX();
}
3、优化layou布局文件
layoutopr工具可以对layout布局文件进行检测,可以找出需要优化的地方;layoutopr使用方法,可以从http://developer.android.com中学习
4、viewstub的灵活使用
5、优化activity的背景图

浙公网安备 33010602011771号