【问题标题】:Querying Android Groups table very slow查询 Android 组表非常慢
【发布时间】: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_TYPEGroups.ACCOUNT_NAME 的特定值 - 但这同样慢。
  • 好吧,我们在生产中也有类似的查询,我在分析中得到了测量结果,它们大约是 10-20 毫秒,所以也许你有一个损坏的 Groups 表或其他东西。我建议尝试使用不同的设备,最好使用不同的联系人帐户
  • 我也得出了同样的结论。擦除 Android 联系人存储使查询时间可以忽略不计。

标签: android android-contacts android-contentresolver


【解决方案1】:

(把评论变成正确答案)

我们的生产应用程序中的类似查询报告时间约为 10-20 毫秒。 也许你有一个损坏的Groups 表。

我建议尝试不同的设备,最好使用不同的联系人帐户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2015-11-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多