Android SQLite database is locked

今天遇到了个Android SQLite database is locked的问题,几番查找原因是因为多线程同时对数据库操作引起的问题,Google了一下,SO上的人都建议使用ContentProvider,要么就是保持数据库操作的同步。我担心同步会影响程序的性能,就没有采用同步的方式,ContentProvider是个较好的选择。但是我又不想再去添加一个ContentProvider,因为多写代码意味着更多的bug,我就想在现有的基础上看能不能找到个解决方案。 在SO上看到有个人给出了为什么ContentProvider能解决这个问题的原因:因为ContentProvider使用的是一个SQLiteOpenHelper意味着就只有一个数据库连接,而SQLiteDatabase 自己会处理好locking的问题。只要不使用2个不同的数据库连接来操作数据库就不会出现这个问题,也就不需要使用ContentProvider,然后我就将封装数据库操作的类写成了一个单例类,这样就只存在一个SQLiteOpenHelper,也就解决了我的问题。多次测试,完美运行,感谢SO。 具体的可以看这儿: http://stackoverflow.com/a/2697553/1388881 这篇文章页可以参考一下: http://touchlabblog.tumblr.com/post/24474398246/android-sqlite-locking

你可能感兴趣的:(sqlite,Lock,multithread)