我使用Retrofit下载json
个Client
,然后我必须使用Realm(Client
extends {来保留它们{1}})。问题是我有15k RealmObject
s,因此保存需要几秒钟。如果我无法在线程之间传递Client
,如何将我从Retrofit
获得的客户列表传递给background thread
?
当我执行保存时,这是我现在的代码,它会阻止用户界面几秒钟。
RealmObject
答案 0 :(得分:1)
我个人会试着让我的服务和持久层分离。将网络响应解析为实现为简单POJO的Client类,并仅在处理数据库时使用RealmObjects(您需要在两个'客户端实体之间使用某种映射实用程序)。
如果您真的想将Retrofit响应用作RealmObjects,那么您可能需要放弃“回调”#39;在您的API接口中格式化并实现您自己的线程解决方案,因此Retrofit和Realm操作都在同一个线程中执行。
基本上,将其设置为可以执行以下操作:
try {
List<Client> clients = api.clients(token, date);
saveClients(clients);
} catch(RetrofitError e){
Response response = e.getResponse();
if (response.getStatus() == 401) {
// Wrong token, refresh it and retry
refreshLoginToken();
} else {
// Propagate error on the UI thread or whatever :P
}
}
在后台线程中。