我一直在嘗試在我的應用程序中應用RetroFit REST客戶端,並且遇到了一個我似乎無法解決的問題。我嘗試下載一個.json文件(services.hanselandpetal.com/feeds/flowers.json),並在幾秒鐘的下載後不斷收到一個stackoverflow錯誤:Retrofit在堆棧大小錯誤中導致GET結果,1036 KB
「com.dbflowtest.MainActivity:retrofit.RetrofitError:stack大小1036KB「。
下面是我使用的代碼:
FlowerAPI.java
public interface FlowerAPI {
@GET("/feeds/flowers.json")
public void getFeed(Callback<List<Flower>> response);
}
MainActivity.java
private void requestFlowers() {
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(ENDPOINT)
.build();
FlowerAPI api = adapter.create(FlowerAPI.class);
api.getFeed(new Callback<List<Flower>>() {
@Override
public void success(List<Flower> flowers, Response response) {
Log.d(TAG, "Received flowers.")
}
@Override
public void failure(RetrofitError error) {
Log.d(TAG, error.toString());
}
});
}
Flower.java
@Table(databaseName = AppDatabase.NAME)
public class Flower extends BaseModel {
@Column(columnType = Column.PRIMARY_KEY)
public int productId;
@Column
public String category;
@Column
public double price;
@Column
public String instructions;
@Column
public String photo;
@Column
public String name;
private List<Flower> flowers;
public Flower() {}
public Flower(int productId, String category, double price, String instructions, String photo, String name) {
this.productId = productId;
this.category = category;
this.price = price;
this.instructions = instructions;
this.photo = photo;
this.name = name;
}
public List<Flower> getFlowers() {
if(flowers == null) {
flowers = new Select()
.from(Flower.class)
.queryList();
}
return flowers;
}
}
我似乎無法來解決這個問題。任何幫助非常感謝,因爲我真的很想使用這個框架:)。
解決
出於某種原因,當我使用POJO兩個改造和DBFlow我得到這個堆棧大小問題。因此,我沒有創建1個Flower.java類,而是創建了另一個名爲FlowerDB.java。這解決了我的問題!
是錯誤堆棧溢出或堆棧大小?我只是測試了這個代碼,它的工作原理。我認爲你需要發佈花類。 – inmyth
謝謝你測試它。我剛剛發佈了我的Flower.java類。我認爲唯一相關的領域是屬性。註釋是針對DBFlow的。並回答你的問題,我得到一個堆棧大小的問題,而不是一個stackoverflow :)。 –
它仍然有效。如果刪除所有註釋,該怎麼辦?你有沒有嘗試調用不同的API? – inmyth