Android - sqlite内容提供程序和多线程

use*_*ser 6 sqlite android android-contentprovider

我对内容提供商有点困惑.如果我在我的应用程序中有多个活动,他们每个人都会获得自己的内容提供者实例吗?它本质上只是一个类/接口?

在一个活动中,我将有许多线程同时写入数据库.我如何处理允许一个线程一次写入?

我只是捕获SQLiteDatabaseLockedException,将线程置于休眠状态然后重试?或者,还有更好的方法?

当活动暂停/被销毁时是否释放数据库锁?如果是这样,我可以创建一个针对内容提供商本身的同步锁?

Fem*_*emi -3

如果您使用 ContentProvider,我相信您并不关心有多少线程正在读/写:Android 平台负责将所有调用编组到单个线程上并排序同步和锁定。您只需打开数据库并对其进行读/写,其他人就通过 ContentProvider 接口进行对话。

  • Android 文档“因为这些 ContentProvider 方法可以从不同进程和线程中的各种 ContentResolver 对象调用,所以它们必须以线程安全的方式实现。” (6认同)