Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 从多个线程访问的SQLite DB大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
虑以下内容我有service,它在AsyncTask中写入DB.我的Activity从DB读取数据(为简单起见,虑UI线程).我使用sqliteOpenHelper访问数据库.我在 Application onCreate()中创建单个实例,然后在服务和活动中获取它.我有可能让我的数据库’死锁’吗?以前,我使用COntentProvider进行此类操作.然它基于使用单个sqliteOpenHelper实例,但我决定通过排除ContentProvider来简化我的项目.

代码

public class App extends Application {

    private OpenHelper openHelper;

    @Override
    public void onCreate(){
        super.onCreate();
            openHelper=new openHelper();
    }

        public OpenHelper getHelper(){
            return openHelper;
        }
}

在活动中:

OpenHelper Helper=(App)getApplication().getHelper();
sqliteDatabase db=Helper.getReadableDatabase();
// Do reading

在Serice内部,在单独的线程中:

OpenHelper Helper=(App)getApplication().getHelper();
sqliteDatabase db=Helper.getWritableDatabase();
//Do wriTing

它会安全吗?

UPD This可能是解决方案,但不确定如何使用它.

解决方法

迟到,迟到的答案.你完全没事.实际上,这是实现它的正确方法.请参阅我的博文: http://touchlabblog.tumblr.com/post/24474750219/single-sqlite-connection/.在此处浏览我的个人资料.很多这方面的例子.除非您在应用程序之外共享数据,否则ContentProvdier只需很多开销而且不需要.事务处理可以加快速度并且(显然)提高一致性,但不是必需的.

只需在您的应用中使用一个sqliteOpenHelper即可.

大佬总结

以上是大佬教程为你收集整理的android – 从多个线程访问的SQLite DB全部内容,希望文章能够帮你解决android – 从多个线程访问的SQLite DB所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。