Android从多个线程访问SQLite数据库

时间:2011-08-22 17:49:25

标签: android multithreading sqlite

我在android中有一个SQLite数据库,在活动运行时从一个线程访问,在活动的onPause()中创建一个新线程,用一个不同的线程将所有内容保存到数据库中以避免超时问题。但是,当我尝试这样做时,我要么得到数据库被锁定的错误。我怎样才能解决这个问题?由于我需要从onPause()中的一个单独的线程访问数据库,我可以删除以前对它的访问,因为我不会再使用它吗?

2 个答案:

答案 0 :(得分:0)

当SQLite数据库已经锁定时,您无法访问该数据库。

为避免这种情况,Android会为您提供ContentProviders来处理此类事情。

您应该实现自己的ContentProvider来执行此类操作。

尽管如此,除非您自己管理线程,否则绝不能假定数据库是线程安全的。避免像这样使用db。相反,缓存数据(可能在堆栈上),并在当前事务完成时使用回调请求访问数据库。

答案 1 :(得分:0)

据我所知SQLite不支持并发访问,因此您必须拥有专用线程来提供访问权限,或者您必须获取对SQLite对象实例的锁定。< / p>

相关问题