【发布时间】:2017-12-06 23:40:17
【问题描述】:
尽管该表只有 15 行并且指定了只有 3 列的投影,但对 Groups 表的单个查询大约需要 5 分钟。
有什么原因可能会这么慢吗?例如,当其他应用程序访问该表时,Android 是否会阻止对该表的访问?有没有更好的方法来获取有关群组的信息?
这是一段代码的示例,它需要 5 分钟以上才能执行(请注意,这里我没有包含查询或投影,但它并不比我做的慢):
ContentResolver resolver = context.getContentResolver();
resolver.query(android.provider.ContactsContract.Groups.CONTENT_URI,
null,
null,
null,
null);
【问题讨论】:
-
我还没有见过这么慢的组查询,应该不到一秒钟。尝试选择
Groups.DELETED + "=0 AND " + Groups.GROUP_VISIBLE + "=1",看看是否有帮助。 -
您如何计算查询所用的时间?您是在等待结果显示在屏幕上,还是在日志中测量?我建议在查询行之前和之后添加一条日志消息,并查看时间戳中的差异
-
我已经通过查看日志前后的时间戳来测量时间。我尝试了更窄的选择 - 选择
Groups.ACCOUNT_TYPE和Groups.ACCOUNT_NAME的特定值 - 但这同样慢。 -
好吧,我们在生产中也有类似的查询,我在分析中得到了测量结果,它们大约是 10-20 毫秒,所以也许你有一个损坏的 Groups 表或其他东西。我建议尝试使用不同的设备,最好使用不同的联系人帐户
-
我也得出了同样的结论。擦除 Android 联系人存储使查询时间可以忽略不计。
标签: android android-contacts android-contentresolver