Android ContentProvider与ORMLite

满帅

我正在使用内容提供程序来管理我的应用程序数据,该数据未与其他应用程序共享。但是,有一些样板代码,例如将光标转换为域对象。ORMLite提供了一种更优雅的方式,可以将数据库条目直接映射到域对象。因此,我想用ORMlite替换内容提供程序。但是我有些担心:

  1. 内容提供程序在多线程环境中可以正常工作。我不知道ORMlite是否是线程安全的。
  2. 内容提供商可以广播数据库更改。我不知道ORMLite是否具有这种支持。
  3. Android提供程序提供了一些实用程序(例如AsynQueryHandler,CursorLoader)来异步查询数据库。如果使用ORMLite,则必须显式创建一个线程或AsyncTask来执行查询。

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

Minhaz

我不认为,您可以将其与带有Content Provider的ORM进行比较。ORMLite提供了以下功能链接到用户,并且在开发时具有完全独立的目标。

但是,除了您提到的内容之外,它们还有内容提供商的其他一些好处。

  1. 如果要在多个应用程序或流程之间共享日期。可能现在,您尚无任何计划,但似乎您的应用程序数据库很繁重,将来,如果您打算与第三方或另一个应用程序共享数据,则可以与内容提供商进行选择。

  2. 内容提供程序是所有Android版本的标准配置,这也意味着您的应用程序很安全。我很确定ORMLite也很稳定。但是您真的想冒险吗,特别是如果这样做不节省您的时间或您没有任何业务要​​求的话。Android API已经分散了,您是否还要承担其他工作负载?

  3. 如果您想将数据上传到云,很容易与SyncAdapter集成

  4. 使用android安全和权限功能。

您对处理Content Provider所需的额外代码是正确的。

现在,我正在从事一个大约有20张桌子的项目。我为每个表创建了一个DAO。基本上在内部使用Content provider。

DAO->内容提供程序-> SQL Lite打开帮助器

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
    }
}

我可以不用Content Provider来完成,现在就可以满足当前的要求,但仍然可以选择这条路线。您可能会问为什么?

  • 异步运行
  • 与平台/云轻松集成。
  • 更少的代码,更少的错误,更少的戏剧性(考虑一下我是否必须执行我们刚刚讨论的那些任务)

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

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

最终,每种选择都取决于您的业务需求。如果您有很多持久性对象,那么ORMLite可能是一个不错的选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android ContentProvider vs ORMLite

来自分类Dev

Android ContentProvider与ORMLite

来自分类Dev

Android-使用ORMLite DAO作为ContentProvider

来自分类Dev

Android ContentProvider游标问题

来自分类Dev

Android Ormlite:关闭uithread

来自分类Dev

如何访问或修改Android ContentProvider?

来自分类Dev

Android OrmLite TableUtils创建视图

来自分类Dev

Android在ORMLite中使用OrderBy

来自分类Dev

将Ormlite与SQLCipher Android结合

来自分类Dev

如何评估Android中ContentProvider的效率?

来自分类Dev

带有ContentProvider或SQLiteOpenHelper的Android Sqlite

来自分类Dev

Android Facebook ContentProvider和多种构建类型

来自分类Dev

Android ContentProvider唯一查询

来自分类Dev

Android ContentProvider查找其他URI

来自分类Dev

带有ContentProvider或SQLiteOpenHelper的Android Sqlite

来自分类Dev

Android Studio中的Ormlite Multiple dex

来自分类Dev

Android中使用ORMLITE的多个查询条件

来自分类Dev

ORMLITE中的SQL MAX-MIN-ANDROID

来自分类Dev

在Android中使用ORMLite保留ArrayList <String>

来自分类Dev

在Android上查看由ORMLite生成的SQL

来自分类Dev

使用Ormlite Android存储对象字段

来自分类Dev

OrmLite Android中int的默认值

来自分类Dev

使用Ormlite Android存储对象字段

来自分类Dev

Android Studio中的Ormlite Multiple dex

来自分类Dev

在Android中使用ORMLite保留ArrayList <String>

来自分类Dev

Android ORMLite查找列为整数类型

来自分类Dev

列出ormlite db android的所有表

来自分类Dev

ORMLite 与 Android 数据库连接

来自分类Dev

如何在Android中将ContentProvider与DiskLruCache结合使用