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的背景图

posted @ 2013-06-14 18:29  天边孤雁  阅读(313)  评论(0)    收藏  举报