gpt4 book ai didi

Android:当发生其他一些 ContentProvider 操作/sqlite 写入时,AsyncTask 中的 ContentProvider 请求会延迟

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:45 26 4
gpt4 key购买 nike

我在 AsyncTask 中有一个 ContentProvider 访问权限,在手机上查找存储在 sqlite 中的一些数据时通常工作正常。

不过,我还有一些其他后台服务可以进行网络检查以及下载和更新一些数据。

据观察,此与网络相关的后台 Activity 正在影响我的 ContentProvider。完全处理离线数据的 ContentProvider 要么延迟响应,要么长时间不返回。

那么 ContentProvider 或 sqlite 数据库上是否有任何锁定/排队机制?写入不会发生在与读取相同的表上。

最佳答案

Are then any locking/queuing mechanisms on the ContentProvider or the sqlite database? The writes do not happen to the same tables as the reads.

  1. ContentProvider 实现需要额外的同步才能保证线程安全,即开发者负责

  2. SQLite 是同步的,即写不读

在您的情况下,您可能希望启用 write-ahead-logging (WAL) ,API 11+。这使得写入可以并行发生在单独的日志中:不再需要持有锁并排除并行读取。

例如:

SQLite, Content Providers, & Thread Safety

Official docs for SQLite locking

Good explanation of WAL

关于Android:当发生其他一些 ContentProvider 操作/sqlite 写入时,AsyncTask 中的 ContentProvider 请求会延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31770886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com