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 优化的代码:
?
public class HolderAdapter<E> extends AbstractAdapter<E> { public HolderAdapter(LayoutInflater inflater, ViewCreator<E> creator) { super(inflater, creator); } private static class ViewHolder{ public View view; } @Override public View getView(int position, View convertView, ViewGroup parent) { // Holder View模式实现 if (convertView == null) { ViewHolder holder = new ViewHolder(); convertView = mCreator.createView(mInflater, position,getItem(position)); holder.view = convertView; convertView.setTag(holder); } else { ViewHolder holder = (ViewHolder) convertView.getTag(); //释放当前的View的数据 mCreator.releaseView(convertView, getItem(position)); //将新数据更新到HodlerView中 mCreator.updateView(holder.view, position, getItem(position)); } return convertView; }}?