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