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 优化的代码:
- 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;
- }
- }
Android, BaseAdapter 处理大数据量时的优化的更多相关文章
- 大数据量时Mysql的优化
(转自网络) 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时 ...
- sql大数据量查询的优化技巧
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- MySQL大数据量分页性能优化
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...
- 任何抛开业务谈大数据量的sql优化都是瞎扯
周三去某在线旅游公司面试.被问到了一个关于数据量大的优化问题.问题是:一个主外键关联表,主表有一百万数据,外键关联表有一千万的数据,要求做一个连接. 本人接触过单表数据量最大的就是将近两亿行历史数据( ...
- 大数据量时 Mysql LIMIT如何正确对其进行优化(转载)
以下的文章主要是对Mysql LIMIT简单介绍,我们大家都知道LIMIT子句一般是用来限制SELECT语句返回的实际行数.LIMIT取1个或是2个数字参数,如果给定的是2个参数,第一个指定要返回的第 ...
- 【原创】大数据量时生成DataFrame避免使用效率低的append方法
转载请注明出处:https://www.cnblogs.com/oceanicstar/p/10900332.html ★append方法可以很方便地拼接两个DataFrame df1. ...
- mysql大数据量之limit优化
背景:当数据库里面的数据达到几百万条上千万条的时候,如果要分页的时候(不过一般分页不会有这么多),如果业务要求这么做那我们需要如何解决呢?我用的本地一个自己生产的一张表有五百多万的表,来进行测试,表名 ...
- .net WebService 大数据量时性能的提高
1.直接返回DataSet对象 [WebMethod(Description = "直接返回DataSet对象")] public DataSet GetUserListDateS ...
- Kendo UI中TreeView 放入tabstrip中,大数据量时超过边框的解决方案。
参考http://www.kendoui.com/forums/ui/tabstrip/tabstip-with-treeview-treeview-breaking-out-of-tabstrip. ...
随机推荐
- samba配置(基础版)
1. 下载及安装Samba 推荐用yum来安装,这样它可以自己解决包的依赖关系,省时.省事又方便.一条命令搞定: yum -y install samba 2. 配置Samba 关于Samba的配 ...
- C# 获取字符的Unicode编码
using UnityEngine;using System.Collections;using System.Collections.Generic; List<); string chars ...
- 转:JMeter基础--逻辑控制器Logic Controller
1.ForEach控制器 ForEach控制器在用户自定义变量中读取一系列相关的变量.该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值.所以ForEach总是和User Defin ...
- linux中的 tar命令的 -C 参数,以及其它一些参数(转)
linux中的 tar命令的 -C 参数,以及其它一些参数 复制源:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.htmltar命令 ...
- LeetCode OJ 101. Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...
- updating the chroot
Ubuntu may stop working after a Chrome OS update. If that's the case, update all the installed targe ...
- 手机端的META你知道多少?
一.天猫 <title>天猫触屏版</title> <meta content="text/html; charset=utf-8" http-equ ...
- iOS中静态库-.a文件生成和使用
最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一 ...
- 在Linux中设置共享目录
1. 是否安装了samba服务 sudo apt-get install samba sudo apt-get install smbfs 2. 创建需要共享的目录/ home/usr/share ...
- 如何在spring中获取request对象
1.通过注解获取(很简单,推荐): public class Hello {@Autowired HttpServletRequest request; //这里可以获取到request} 2.在w ...