zoukankan      html  css  js  c++  java
  • Android, BaseAdapter 处理大数据量时的优化

    Android优化 最常见的就是ListView, Gallery, GridView, ViewPager 的大数据优化  图片优化  访问网络的优化
    优化的原则: 数据延迟加载  分批加载  本地缓存
    数据优化   1).复用contentview  
                     2).创建static class ViewHolder
                     3).分批加载 滑动监听 或者按钮  显示更多数据  往下拖动 显示

    图片优化  1).异步加载  
            2).本地缓存(二级缓存  内存(软引用实现),sd卡)  
                    3).快速滑动时不显示图片
                    4).分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池

    异步加载  AsynTask android 封装好的异步数据获取,包括三个方法
                   doInBackground 执行在子线程中的异步方法
                   onProgressUpdate 数据获取之后 执行的方法,在主线程中可以在这里更新UI界面
                   onPostExecute   异步方法执行前,可以进行界面友好提示 在主线程中执行的方法
                   也可以自己封装一个任务类(子线程)thread   采用线程池 这里需要自己维护一个任务列表,并且做到任务的优先级

    对Adapter 优化的代码:

    Java代码  收藏代码
    1. public class HolderAdapter<E> extends AbstractAdapter<E> {  
    2.   
    3.       
    4.     public HolderAdapter(LayoutInflater inflater, ViewCreator<E> creator) {  
    5.         super(inflater, creator);  
    6.     }  
    7.   
    8.       
    9.     private static class ViewHolder{  
    10.         public View view;  
    11.     }  
    12.   
    13.     @Override  
    14.     public View getView(int position, View convertView, ViewGroup parent) {  
    15.         // Holder View模式实现  
    16.         if (convertView == null) {  
    17.             ViewHolder holder = new ViewHolder();  
    18.             convertView = mCreator.createView(mInflater, position,getItem(position));  
    19.             holder.view = convertView;  
    20.             convertView.setTag(holder);  
    21.         } else {  
    22.             ViewHolder holder = (ViewHolder) convertView.getTag();  
    23.             //释放当前的View的数据  
    24.             mCreator.releaseView(convertView,  getItem(position));  
    25.             //将新数据更新到HodlerView中  
    26.             mCreator.updateView(holder.view, position, getItem(position));  
    27.         }  
    28.         return convertView;  
    29.     }  
    30. }  

      摘自:http://thunder-yan.iteye.com/blog/1682955

  • 相关阅读:
    nodejs
    jsp路径问题之base
    WordPress固定链接修改后访问文章页面404
    IntelliJ IDEA使用教程 (总目录篇)
    SQL SELECT DISTINCT 语句
    数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接(转)
    SQL之group by 和 having
    SQL之group by
    通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。
    java.lang.NoClassDefFoundError: Could not initialize class com.demo.jdbc.utils.MyJdbcUtils
  • 原文地址:https://www.cnblogs.com/antyi/p/4829204.html
Copyright © 2011-2022 走看看