android安卓sqlite数据库 多线程并发 locked问题

http://www.360doc.com/content/10/1214/12/87000_77984300.shtml

http://bbs.51cto.com/thread-990260-1-1.html

http://www.cnblogs.com/elect-fans/archive/2012/08/09/2630606.html


多线程操作数据库的时候,比较容易出现这个问题,你需要在需要操作数据数据的时候,提供一个统一的入口,并加上同步锁,或者使用isDbLockedByOtherThreads方法判断数据库是否被锁住了,然后等待一定的时间



使用继承ContentProvider的方式,来解决该异常。

    但是这种方式有2个弊端:

      1.使用继承ContentProvider方式,会将项目的数据库暴露给第三方。一般系统级应用,如存储联系人,         存储短信的数据库才有必要暴露给第三方。

      2.使用方式不如直接继承SQLiteOpenHelper对象简单。



现在不使用继承ContentProvider的方式,我们该如何解决以上的异常呢?

    

     A. ContentProvider能解决此问题的原因是它只用一个单一的SQLiteOpenHelper对象,也就是说在app中仅仅有一个“数据库连接” 连接着数据库并且由SQLiteOpenHelper中的SQLiteDatabase负责维护数据库的锁


    B. 你不需要一个ContentProvider - 只要确保不要用2个不同的“数据库连接”去连接数据库就可以了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值