`

android 本地数据库数据超过10000条排序且一次性加载解决方案

阅读更多

问题描述

本地数据库数据超过10000要求按首字母排序,且一次性加载到界面中,该如何处理,类似与系统的通讯录,一次性加载回来。

解决方案

 1)排序

    排序的实现有两种方式

  •     对象排序
    这种方式根据实现对应的Comparable的compareTo接口实现,然后根据Collection.sort方法进行排序,这种方式在数据量比较少的情况下是可以实现的,但如果数据量过大这种方式会非常慢。
  • 数据库排序

     根据数据库的order by 来实现排序,速度非常

 

  2)UI 显示

       这块非常重要,数据库查询其实非常快,10000条数据大概在400ms左右,远不会超过1s,但是查询到结果后怎么添加到界面上,因为数据量大,基数大,期间任何的转换都是性能的消耗。这里怎么做列表的设计?

当然列表显示控件还是ListView,但adpater不能使用BaseAdapter,必须使用CursorAdapter,好处在于我们查询数据的返回结果是一个cursor我们不需要做任何的转换直接填充到界面上了。

     有些同学喜欢在查询到数据后轮训cursor将其转换成map类型的list或者对象list再填充到界面,这里的轮训就会花费特别多的时间。

总结

     这里简单介绍了本地数据过多的情况下如何查询显示,当然数据量小的情况下可以不用做这种类似的处理。

分享到:
评论

相关推荐

    Android高级应用源码-自定义表格自动刷新数据.rar

    - 内存优化:避免一次性加载大量数据,使用分页加载或懒加载技术,只加载可视范围内的数据。 - View复用:`ListView`和`RecyclerView`的缓存机制,通过复用已创建但不再可见的视图来减少内存消耗。 - DiffUtil:...

    分页控件+排序+分页

    分页控件主要用于分割大量的数据集,避免一次性加载所有数据导致页面响应变慢或者内存压力过大。它将数据分为多个小部分,每次只显示其中一部分,用户可以通过翻页来查看更多的数据。常见的分页控件设计包括页码按钮...

    Android城市切换选择列表

    在性能方面,为了避免一次性加载大量数据导致内存消耗,可以采用分页加载策略。当用户滚动到列表底部时,动态加载更多城市。此外,考虑到用户可能频繁切换城市,使用缓存机制(如LruCache)来存储最近查询过的城市...

    百度校园招聘历年经典面试题汇总:Android岗

    - **解决方案**:使用归并排序或自定义比较器的快速排序算法,避免使用Java自带的排序库。 #### 10. 自定义控件的基本流程 - **创建**:继承View或现有控件。 - **初始化**:在构造函数中初始化属性。 - **绘制**...

    Android 核心面试题

    - 设计模式是在软件开发中反复出现的问题的解决方案。常见的设计模式包括单例模式、工厂模式、策略模式等。 - 单例模式确保一个类只有一个实例,并提供一个全局访问点。 12. 排序算法: - 常见的排序算法有冒泡...

    android小测、面试题

    - **Sqlite简介**:SQLite 是一种轻量级的嵌入式数据库引擎,被广泛应用于移动设备和桌面应用程序中,特别是在Android系统中作为默认的数据库管理解决方案。 - **主要特点**: - **轻量级**:无需单独的服务器进程...

    greendao3.2的简单使用demo

    3. **使用Limit和Offset**:使用`limit()`和`offset()`方法限制返回结果的数量,避免一次性加载大量数据。 总结来说,GreenDao 3.2简化了Android数据库操作,通过面向对象的方式让开发者能够更专注于业务逻辑,而...

    java面试题及答案-非常全面(包括基础、网络、数据结构、算法及IT大厂面经)

    - **解决方案**:使用工具(如VisualVM)检测并修复内存泄露。 - **OutOfMemoryError**:当Java堆空间不足时抛出。 ### for_each和for的效率差别 - **`for`循环**:通用循环结构,适用于任何类型的迭代。 - **`for...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    java开源包11

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包1

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包2

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包3

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包6

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包5

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包10

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包4

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包8

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包7

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包9

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

Global site tag (gtag.js) - Google Analytics