Android ContentProvider以网络作为数据源

时间:2013-06-24 12:14:21

标签: android sql android-contentprovider

我试图通过自定义ContentProvider提供游戏中的高分。它将使用服务器连接而不是SQLite DB。

现在,ContentProvider的 query() update() delete()方法已经选择 selectionArgs sortOrder 参数。所以问题是:我如何解析它们?我不想在这个简单的应用程序中添加繁重的SQL语法解析库。

互联网上的人提到RESTProvider:https://github.com/novoda/RESTProvider。这似乎是我正在寻找的,但结果却错过了相关的代码。

为什么我想首先使用ContentProvider获得高分?因为游标在Android中有很大的支持,它可能对我的其他相关应用程序很有用。

2 个答案:

答案 0 :(得分:2)

没有收到任何回复/评论,所以我自己回答问题。

基本上,在这种情况下的想法是尽可能地简化问题。所以我限制投影只有列名,选择只包含column = ? AND-ed片段,并且必需 sortOrder column ASCcolumn DESC部分组成。

换句话说,您不希望为某些网络数据创建SQL引擎,而只需创建ContentProvider接口。

答案 1 :(得分:0)

您的应用与ContentProvider之间的集成只是通过Uri's。 因此,正如您已经说过的那样,根本不需要SQL。 您只需使用通常的query(..)语句实现if/switch方法并执行网络请求。 最有可能的是,您在应用中使用LoaderManager.LoaderCallbacks<D>,网络请求将在主线程外部执行。

现在,问题是关于<D>类型 - 必须Cursor才能符合内容提供商query方法返回类型。
您应该实现接口Cursor只是为了保持应用程序的一致性 - 您的新Cursor类可能正在解析JSON并返回数据,就像使用SQLite游标一样。您必须创建带索引的地图才能模拟_cursor.get<Type>(_cursor.getColumnIndex(_name))

另一种方法是实施LoaderManager.LoaderCallbacks<YourClass>。并且YourClass将有其他方法来简化从实际内容中获取数据。当然,由于Content Provider返回Cursor,因此在创建加载器时需要介入一些内容。