Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android開發進階之NIO非阻塞包(五)

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

編輯:高級開發

有關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開發網總結出常見的問題,並給大家一個較科學完善的框架,減少不必要的麻煩產生。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved