Android開發進階之NIO非阻塞包(五)

來源:互聯網
上載者:User

有關Android NIO的注意點和重點今天Android123著重分析下上次 Android開發進階之NIO非阻塞包(四) 一文中提到的不足地方改進。由於目前國內很多人資料書籍編寫人員沒有通過NIO實現伺服器的經驗,導致了很多例子中存在嚴重的錯誤,由於大多數例子為Echo這樣的單次互動以及資料量較小所以反映不出問題的所在。

   1. 讀和寫應該分開,NIO使用的是非同步方法但不等於說不會阻塞,在上面的例子中我們可以看到 判斷  key.isReadable() 時,對於這個SelectionKey關聯的SocketChannel盡量不要使用寫入資料量過多時ByteBuffer使用hasRemaining這樣的方法,NIO每次讀寫不一定全部要把資料讀完在一次Selector時。

  2. 對於上面的解決方案我們可以繼續關注感興趣的事件,比如說使用interestOps方法,而很多資料中均使用了錯誤的繼續用Selector的register方法繼續註冊事件,這樣沒有發生錯誤的原因是每次註冊時會替換上次的這個key註冊的事件,比較僥倖,從效率上講還會判斷這個key上次註冊的是什麼事件,並不是一種正統的方法。

  3. 我們可以繼續判斷寫入事件,比如key.isWritable,在寫入時來處理髮送資料。這樣可以應對很多低速網路時產生的異常。

  有關的細節還有很多,下一次Android開發網總結出常見的問題,並給大家一個較科學完善的架構,減少不必要的麻煩產生。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.