zoukankan      html  css  js  c++  java
  • Android开发,通迅薄的注意事项

    上周拿到小米。最近一周在尝试开发通迅薄。一方面是系统自带的通迅薄的确有些不爽的地,一方面也是想尝试写一些手机应用。

    中间碰到两个问题,估计其它人也会碰到,就一并写下。

    1 效率太慢。

    网上有大量的帖子(如http://blog.csdn.net/yao_guet/article/details/6626001),先要去查所有联系人(有些人根本没有电话),接着去查电话纪录(一个人可能有多个电的话)。如果你的联系很多,比如像我有600多个联系人,那打开通迅薄差不多要3秒以上(小米的硬件还是很强悍的)。问题的关键就这在两个while上。

    其实只需要直接查询ContactsContract.CommonDataKinds.Phone.CONTENT_URI就可以拿到DisplayName和PhoneNumber。我想内部很可能只查了一个表就搞定了。

    另外,我的应用只需要手机,所以加上以下条件

    StringBuffer selection = new StringBuffer()
    .append(pn + " NOT LIKE '106%'")
    .append(" and substr("+pn+",0,3) != '106'")
    .append(" and "+pn + " NOT LIKE '010%'")
    .append(" and length("+pn + ") >= 11")
    .append(" and ("+pn + " LIKE '1%' or "+pn + " LIKE '01%')");

    基本上够我用了。

    针对查询速度问题,有熟手自己写AyncQueryHandler。我这种菜鸟没敢尝试。

    2 通迅薄拼音排序

    网上的例子大部份都是 

    sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

    本来以为Sqlite和SQL server差不多应该能换那个LOCALIZED,结果都不行。

    其实一句话就能搞定

    sortOrder = "sort_key_alt";

    我想可能在表中有个字段就叫sort_key_alt。

    二个问题都很常见,网上也有很多人问,不过正确答案确不多。另外,Android的API也的确比较乱点,中文资料也很少(个人观点)。

  • 相关阅读:
    IntelliJ Idea 快速配置
    常用资源工具集合
    IntelliJ Idea 快捷键大全
    spring boot注解梳理
    boot中的Scheduling定时器使用笔记
    OKHttp使用笔记
    EasyExcel使用笔记
    自定义注解用AOP实现接口信息打印
    Java的具体集合
    linux修改系统时间
  • 原文地址:https://www.cnblogs.com/goodspeed/p/android_start.html
Copyright © 2011-2022 走看看