CodenameOne连接请求在重复时挂起

时间:2014-05-23 07:29:54

标签: connection request codenameone

我有以下用于访问网络资源的Codename One代码。它几乎是这个用例的Codename One教程的精确副本。

 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对话框永远旋转。它几乎就像第一个网络请求永远不会真正完成,然后是第二种类型的冲突。我有什么想法我做错了吗?

3 个答案:

答案 0 :(得分:0)

默认情况下,禁用对完全相同的URL的重复请求,尝试在连接请求上调用setDuplicatesSuppotred(true)

答案 1 :(得分:0)

为了将来的参考,为我解决的问题是使用

NetworkManager.getInstance()addToQueueAndWait(R);

代替。这解决了我的大部分问题。

答案 2 :(得分:0)

我坚持同样的问题,但解决方案都没有奏效。但是,我是这样做的:

final NetworkManager nm = NetworkManager.getInstance();
nm.setTimeout(3000);

然后

protected void postResponse() {
...
    nm.shutdown();
}

并且打电话为 nm.addToQueueAndWait(request);

也许NetworkManager最终成功完成了这项工作,但我肯定会把“关机”放进去。它对我有用