【发布时间】:2016-03-17 18:35:08
【问题描述】:
我在使用 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..);? -
嗨@Ewoks 感谢您的回复..目前我不再使用android了..
-
@cana 请不要再在这种状态下留下问题。当其他用户登陆这里时,他们只是因为模糊的问题描述和诸如“我刚刚解决了它,不再重要”之类的问题而浪费时间
-
@cana 你能提供你的答案吗?这对 stackoverlofw 上的其他用户有点不公平。这是关于获得帮助和帮助。
标签: java android gson realm retrofit