在使用 Retrofit + Gson 和 Realm 时,我遇到了问题。我知道这三个库的组合存在问题。一些答案建议为 Gson 设置一个 ExclusionStrategy
可以解决这个问题,但我尝试过了,没有起作用。
我的代码如下:
public class ObjectList {
public List<AnotherObject> anotherObject;
}
public class AnotherObject extends RealmObject {
private String propA;
public void setPropA(String propA){
this.setPropA = propA
}
public String getPropA(){
return propA
}
}
Gson gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
}).create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost/api/")
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
ObjectAPI objectAPI = retrofit.create(ObjectAPI.class);
call.enqueue(new Callback<ObjectList>() {
@Override
public void onResponse(Response<ObjectList> response, Retrofit retrofit) {
objectList = response.body().anotherObject;
onRefreshComplete();
}
@Override
public void onFailure(Throwable t) {
Toast.makeText(context, "Connection to server failed, please check your connection", Toast.LENGTH_LONG).show();
}
});
使用当前的代码,我仍然遇到了内存泄漏问题。这段代码有什么建议吗?
我的JSON结构如下:
{"anotherObject":[{"propA": "someValue"}]}
response.body().anotherObject;
?你应该使用response.body().get(0..);
。 - Jemshit Iskenderov