我有以下Codename用於訪問網絡資源的一個代碼。它幾乎是這個用例的Codename One教程的精確副本。CodenameOne連接請求在重複時掛起
public void executeRequest(){
String url = "http://www.random.net";
InfiniteProgress prog = new InfiniteProgress();
final Dialog dlg = prog.showInifiniteBlocking();
ConnectionRequest r = new ConnectionRequest() {
@Override
protected void postResponse() {
//handle changes to my form
}
@Override
protected void readResponse(InputStream input)
throws IOException {
//handle parsing data
}
@Override
protected void handleIOException(IOException err) {
super.handleIOException(err);
}
};
r.setUrl(url);
r.setPost(false);
r.addArgument("arg", "2");
r.setDuplicateSupported(true);
r.setDisposeOnCompletion(dlg);
NetworkManager.getInstance().addToQueue(r);
}
我第一次運行它 - 沒問題。如果我嘗試通過再次調用相同的方法來「刷新」我的數據,那麼應用程序將掛起並永遠旋轉的InfiniteProgress對話框。它幾乎像第一個網絡請求沒有真正完成,然後是第二種衝突。任何想法我做錯了什麼?
謝謝你的建議,謝。我添加了那些代碼(反映在我上面的代碼塊中)並嘗試了它 - 結果相同。將連接請求添加到隊列後,應用程序將掛起並且ReadResponse方法永遠不會被調用。 – jg1998
您是否在第一個電話完成之前發送第二個電話? 如果是這樣,它可能會完成並返回到前一個呼叫的等待對話框。 如果不是,我建議打開網絡監視器工具來查看連接出去。您也可以在調試器中運行,並在應用程序卡住時按暫停以查看各個線程的卡住位置。 –