微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android ContentProvider与ORMLite

我正在使用内容提供商管理我的应用程序数据,而不是与其他应用程序共享.然而,有一些样板代码,如将光标转换为域对象. Ormlite提供了一种更优雅的方式,将数据库条目直接映射到域对象.所以我想用Ormlite替换内容提供者.但我有一些担心:

>内容提供者在多线程环境中工作正常.我不知道Ormlite是否是线程安全的.
>内容提供商可以广播数据库更改.我不知道Ormlite是否有这种支持.
> Android提供一些实用程序,如AsynQueryHandler,CursorLoader来做异步查询数据库.如果我使用Ormlite,我必须明确地创建一个线程或AsyncTask来执行查询.

我是否应该用Ormlite替换内容提供者?

解决方法

我不认为,您可以与内容提供商的ORM进行比较. Ormlite为用户提供以下功能 link,并在开发时具有完全独立的目标.

但除了你提到的事情外,他们是内容提供商的其他好处.

>如果要在多个应用程序或进程之间共享日期.可能现在你没有任何计划这样做,但似乎你的应用程序在数据库上很重,如果您计划与第三方或另一个应用程序共享您的数据,您可以随时与内容提供商选择.
>内容提供商是Android的所有版本的标准,也意味着您的应用程序是安全的.我很确定Ormlite也是稳定的.但是,您是否真的想要承担这一风险,特别是如果不节省您的时间,或者您没有任何业务要​​求. Android API已经碎片化了吗?
>如果要将数据上传到云端,可以很容易地与SyncAdapter集成
>使用android安全和权限功能.

关于处理内容提供​​商所需的额外代码,您是对的.

现在我正在开展一个项目,我们有大约20个桌子.我已经为每个表创建了一个DAO.其中基本内部使用内容提供商.

DAO->内容提供者 – > sql Lite Open Helper

Class XyzDao{
    private final Context mContext;
    XyzDao(Context context){
        this.mContext=context;
    }
    public String getMyData(){
        //content provider code
        return myData;
    }
    public void setMyData(String x,int y,double z){
        //content provider code to set the data
    }
}

我可以没有内容提供商,现在,目前的要求,将工作正常,但仍然我选择这条路线.你会问大概是为什么?

>异步操作
>轻松与平台/云端集成.
>减少代码错误这么少的戏剧(想想如果我必须实现我们刚才讨论的那些任务)

而且,最好的部分是从任何活动我可以简单地使用我的DAO访问数据库.

或者,您可以直接从DAO访问SQLLiteOpenHelper.

在一天结束时,每个选择都取决于您的业务需求.如果你有很多持久性对象,Ormlite可能是一个不错的选择.

原文地址:https://www.jb51.cc/android/310505.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐