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;
    }
}
时间: 2024-10-28 13:56:19

Android, BaseAdapter 处理大数据量时的优化的相关文章

大数据量时Mysql的优化要点

如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时解决了这一危机.它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升.但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的.这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库. 虽然关系型数据库在海量数据中逊色于NoSQL

大数据量时Mysql的优化

(转自网络) 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时解决了这一危机.它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升.但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的.这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库. 虽然关系型数据库在海量数据中逊

sql大数据量查询的优化技巧

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from xuehi.com where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from xuehi.com where num=0 3.应尽量避免在 where 子句中使用

大数据量表的优化查询

1:索引,我们最先想到的就是创建索引,创建索引可以成倍的提升查询的效率,节省时间.但是如果数据量太过于巨大的时候,这个时候单纯的创建索引是无济于事的,我们知道假如特别是在大数据量中统计查询,就拿1000W数据来说吧,如果使用count函数的话,最少要50-100秒以上,当然如果你的服务器配置够高,处理够快,或许会少很多但是一样会超过10秒. 单纯的建立索引是无济于事的.我们可以在创建索引的时候给索引加个属性,compress,这个属性可以将所创建的索引进行一个良好的归类,这样的话,查询速度会提升

任何抛开业务谈大数据量的sql优化都是瞎扯

周三去某在线旅游公司面试.被问到了一个关于数据量大的优化问题.问题是:一个主外键关联表,主表有一百万数据,外键关联表有一千万的数据,要求做一个连接. 本人接触过单表数据量最大的就是将近两亿行历史数据(某运营商一业务一年数据)做查询,所有查询相关列必须做索引,而且还要保证不会出现全表扫描情况.也从来没有试过把这么多数据全部拿出来放内存中.只好回答说“再怎么做优化估计都不行,这数据量太大了,性能肯定吃不销.我只能告诉尽可能的添加过滤条件,不要一次用这么多的数据来做连接,能分批做就分批做吧”. 面试人

mysql大数据量之limit优化

背景:当数据库里面的数据达到几百万条上千万条的时候,如果要分页的时候(不过一般分页不会有这么多),如果业务要求这么做那我们需要如何解决呢?我用的本地一个自己生产的一张表有五百多万的表,来进行测试,表名为big_data;首先我们看如下几条sql语句:在这之前我们开启profiling来监测sql语句执行的情况.set profiling=1;1.查询从第10w条数据开始分页10条2.查询从第20w条数据分页10条3.查询从第30w条数据分页10条 3.查询从第300w条数据分页10条 3.查询从

.net WebService 大数据量时性能的提高

1.直接返回DataSet对象 C#代码   [WebMethod(Description = "直接返回DataSet对象")] public DataSet GetUserListDateSet() { SqlConnection sqlCon = new SqlConnection("Data Source=.,1444;Initial Catalog=StudyNet;Persist Security Info=True;User ID=**;Password=***

大数据量分页问题优化sql代码

以下分享一点我的经验 一般刚开始学SQL语句的时候,会这样写 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 也许耗费几十秒 网上很多优化的方法是这样的 代码如下: SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT

大数据量传输时配置WCF的注意事项

原文:大数据量传输时配置WCF的注意事项 WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定的通道上可以接收的消息的最大大小. basicHttpBinding等预定义的绑定一般具有MaxReceivedMessageSize属性,CustomBinding则需要在Transport中定义. 示例代码: <bindings> <custom