我正在嘗試編寫一個正在進行大量網絡連接的MIDP應用程序。這一切都是通過HttpURLConnection完成的(這是所有此平臺支持的; Socket不起作用)。導致問題的主要部分是通過一組HTTP連接傳輸InputStream和OutputStream的代碼,以便每次讀寫都變成一個單獨的POST請求。MIDP中的複雜網絡:如何關閉URLConnection
我發現雖然在MIDP中做網絡連接並不算太壞,停止在MIDP中做網絡連接是一場噩夢。我發現我結束了很多線程,所有這些線程在read()或write()上都被阻塞,並且找到它們並且殺死真的很難。 Thread.interrupt()在Java的InputStream.read()和OutputStream.write()中不起作用並且在Stream上調用close()並不總是可行,因爲流可能被隱藏在內部URLConnection和URLConnection本身沒有辦法告訴它關閉連接。
這並不能幫助我的平臺瘋狂挑剔的清理。如果我在應用程序退出系統重新引導時離開一個線程運行。我懷疑它是在與主設備UI相同的虛擬機中運行我的midlet。
所以:任何人都可以提出一個合適的結構,我應該採用這種方式來簡化這種事情嗎?因爲現在它變成了線程的分形迷宮,並捕獲塊和中斷以及IOException,我正在迅速失去它應該如何工作的軌跡。
另外,包裝URLConnection的一個很好的事件驅動的IO庫會很方便。唉,這是MIDP,所以nio或頻道或類似的東西不是一種選擇。
編輯:更新:原來,這是不 MIDP畢竟,這是PBP 1.1。啊,文件不足的樂趣。儘管如此,它們並不太相似,並且供應商有告訴我們,唯一可用的網絡系統是HttpURLConnection。
我假設你引用的是MIDP連接和HttpConnection而不是Java SE URLConnection和HttpURLConnection? – ThomasRS 2011-04-03 23:01:22
嗯。這很有趣---我*指的是URLConnection。該設備非常奇怪,並且具有完全定製的MIDP實現(因此我的痛苦很大);我沒有關於哪些類支持的明確列表。顯然,他們正在混合一些SE東西。這是否會讓我的工作變得更難或更糟......? – 2011-04-04 09:50:17
糟糕得多;因爲我猜這意味着你被一個設備卡住了,它不起作用。您應該檢查某些類型的線程(如來自系統事件)是否無法聯網 - 但是您可能會看到網絡模塊崩潰,深入設備內部並且無法訪問。更新到最新的固件或提交錯誤。你有我的同情心.. – ThomasRS 2011-04-04 10:57:21