Json 从 Retrofit 到 SQLite 数据库
Json from Retrofit to SQLite Database
只是想知道如何将 Json 数据从 Retrofit 发送到 SQLite 数据库(通过 ContentProvider)?
在 Retrofit 之前,我曾经执行请求,获取 Json 并将其发送到 IntentService 中的 ContentProvider。所以调用服务器然后写入数据库是在工作线程中完成的。
但是现在开始使用Retrofit 2;拿到了我的 Json;我想知道如何将它写入数据库?
我将序列化 POJO,使用 Intent 将其发送到 IntentService,然后在 onHandleIntent(Intent) 中写入数据库。
但我想知道这是不是正确的方法,是否有其他标准方法?
我四处寻找,但没有人谈论它。
谢谢
SyncAdapter 是解决此问题的一种非常标准的方法。它封装了您的服务器和本地数据库之间的数据传输。作为警告,涉及相当多的设置。
如果您不想编写 SyncAdapter,您提出的方法可以正常工作。我可能会建议在您的 IntentService 中进行改造调用。这样您就不必将所有 json 打包到您的 Intent 中。例如:
// In IntentService
@Override public void onHandleIntent(Intent intent) {
MyModel data = getRetrofitCall().execute()
// convert data to ContentValues
getContentResolver().bulkInsert(contentValues)
}
然后,在您的 Activity 中,或者您需要触发同步的任何地方,您只需启动 IntentService。
只是想知道如何将 Json 数据从 Retrofit 发送到 SQLite 数据库(通过 ContentProvider)?
在 Retrofit 之前,我曾经执行请求,获取 Json 并将其发送到 IntentService 中的 ContentProvider。所以调用服务器然后写入数据库是在工作线程中完成的。
但是现在开始使用Retrofit 2;拿到了我的 Json;我想知道如何将它写入数据库? 我将序列化 POJO,使用 Intent 将其发送到 IntentService,然后在 onHandleIntent(Intent) 中写入数据库。
但我想知道这是不是正确的方法,是否有其他标准方法?
我四处寻找,但没有人谈论它。
谢谢
SyncAdapter 是解决此问题的一种非常标准的方法。它封装了您的服务器和本地数据库之间的数据传输。作为警告,涉及相当多的设置。
如果您不想编写 SyncAdapter,您提出的方法可以正常工作。我可能会建议在您的 IntentService 中进行改造调用。这样您就不必将所有 json 打包到您的 Intent 中。例如:
// In IntentService
@Override public void onHandleIntent(Intent intent) {
MyModel data = getRetrofitCall().execute()
// convert data to ContentValues
getContentResolver().bulkInsert(contentValues)
}
然后,在您的 Activity 中,或者您需要触发同步的任何地方,您只需启动 IntentService。