您的位置:首页 > 移动开发 > Android开发

Android开发,通迅薄的注意事项

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

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

1 效率太慢。

网上有大量的帖子(如/article/2788084.html),先要去查所有联系人(有些人根本没有电话),接着去查电话纪录(一个人可能有多个电的话)。如果你的联系很多,比如像我有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也的确比较乱点,中文资料也很少(个人观点)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: