2013-02-25 15 views
2

我對Java的通用網絡非阻塞套接字庫,在默認情況下JVM一切工作正常,但在Android平臺下一個代碼塊:的Android DatagramChannel.register()塊的執行

DatagramChannel channel; 
. . . 
channel.bind(...) 
channel.configureBlocking(false); 
. . . 
channel.register(udpSelector, SelectionKey.OP_READ | SelectionKey.OP_WRITE); 

塊上的寄存器(),執行可以被鎖定20-40秒或永久,僅與OP_READ相同或僅與OP_WRITE相同。

任何提示如何解決?

編輯:Android 2.3和Android 4.0.4的相同問題

回答

1

這是一個重複的問題。請參閱 Java non-blocking IO selector causing channel register to block其中聲明「選擇器具有多個記錄的內部同步級別,並且您正在運行它們,在調用register()之前調用選擇器喚醒()。確保選擇循環在零選擇的鍵,這是喚醒()時會發生什麼。「

+0

仍然阻止。我正試圖在運行時註冊頻道。 – shantanu 2015-06-08 08:20:08