首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIDP中的复杂网络:如何关闭URLConnection

MIDP中的复杂网络:如何关闭URLConnection
EN

Stack Overflow用户
提问于 2011-04-03 22:24:19
回答 1查看 322关注 0票数 1

我正在尝试编写一个MIDP应用程序,它正在进行大量的网络连接。这一切都是通过HttpURLConnection完成的(这是这个平台所支持的,套接字不起作用)。造成问题的主要部分是代码通过一组HTTP连接来隧道InputStream和OutputStream,这样每个读和写都会变成一个单独的POST请求。

我发现,虽然在MIDP中进行联网并不是太糟糕,但是在MIDP中停止进行网络连接是一场噩梦。我发现我最终得到了很多线程,所有这些线程都在read()或write()上被阻塞,而找到它们并杀死它们真的很困难。Thread.interrupt()不能在Java的InputStream.read()和OutputStream.write()中工作,在流上调用close()并不总是可能的,因为流可能隐藏在URLConnection中,而URLConnection本身也无法告诉它关闭连接。

我的平台对清理工作过于挑剔,这一点也没有帮助。例如,如果我在应用程序退出时保持线程运行,系统将重新启动。我怀疑它在与主设备UI相同的VM中运行我的中间版。

所以:有人能提出一个合适的结构,我应该采取,使这类事情更容易吗?因为现在它正在变成一个由线程、捕捉块、中断和IOExceptions组成的分形迷宫,我和我正在迅速地忘记它应该如何工作。

或者,一个好的事件驱动IO库包装URLConnection将是方便的。唉,这是MIDP,所以nio或频道之类的都不是一个选择。

编辑:更新:事实证明,它毕竟不是MIDP,而是PB1.1。啊,文件不足的乐趣。尽管如此,他们并没有太大的不同,供应商告诉我们,唯一的网络系统工作是HttpURLConnection。

EN

回答 1

Stack Overflow用户

发布于 2011-04-03 22:50:41

您将经历不同的网络问题,不仅在不同的手机,而且在不同的配置和运营商,固件,网络和网络条件。

也就是说,您可以使用套接字实现HTTP客户端--您的假设在所有最老的手机上都不是正确的。此外,您还应该查看Connection.close()方法。我目前正在使用以下close方法,该方法简单但有效:

代码语言:javascript
复制
public void close() {
    if (inputStream != null) {
        try {
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            inputStream = null;
        }
    }
    if (outputStream != null) {
        try {
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            outputStream = null;
        }
    }
    if (connection != null) { 
        try {
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            connection = null;
        }
    }
    closed = true;
}

如果这不管用,你就完蛋了。换句话说,你不应该假设你能让你的MIDP在所有的MIDP手机上完美地工作--因为你不会。为了更大的图景而设计,不要花时间去调试有着无可救药的缺陷的MIDP实现。

你可能想要同步。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5532960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档