Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android開發中多線程及異步處理

Android開發中多線程及異步處理

編輯:關於android開發

  1.用戶態線程:
由於內核並沒有對多線程進程的支持,因此,內核中只有單線程進程的概念, 而多線程進程是通過一個和應用程序連接的函數庫實現的。由於內核沒有輕量 級進程(線程)的概念,因此它不能獨立的對之進行調度,而是由一個線程運 行庫來組織線程的調度,其主要工作在於在各個線程的棧之間調度。如果一個進程中的某一個線程調用了一個阻塞的系統調用,該進程就會被阻塞,當然該進程中的其他所有線程也同時被阻塞,因此UNIX使用了異步I/O機制。

  這種機制主要的缺點在於在一個進程中的多個線程的調度中無法發揮多處理器的優勢(如上述的阻塞情況)。

  其優點包括:
A(相對於進程操作而言)某些線程操作的系統消耗大大減少。比如,對屬於同一個進程的線程之間進行調度切換時不需要調用系統調用,因此將減少額 外的消耗,往往一個進程可以啟動上千個線程也沒有什麼問題。

  B 用戶態線程的實現方式可以被定制或修改以適應特殊應用的要求。這對於多 媒體實時過程等尤其有用。另外,用戶態線程可以比核心態線程實現方法的默認情況支持更多的線程。

  LINUX的線程庫有NPTL(Native POSIX Thread Library)和LinuxThreads。

  2.核心態線程
這種線程的實現方法允許不同進程中的線程按照同一相對優先調度方法進行調 度。這有利於發揮多處理器的並發優勢。

  3.Handler、Looper、MessageQueue介紹
Handler用於異步消息處理,但是Handler自己並不會創建線程。一般Handler用於計劃任務和線程間的通信。
在後台線程與UI線程的交互中最常用。原理是:系統啟動程序時,會自動為UI線程創建一個消息隊列,和用於管理這個消息隊列的Looper。在創建的後台線程時,默認是不會創建Looper和消息隊列的(我們自己可以通過調用Looper.prepare()給後台線程創建Looper和消息隊列)。
通過給Handler傳遞不同的Looper實現向不同的線程傳遞信息。Looper.getMainLooper()會獲得UI線程的Looper。

  4.Android多線程與界面交互的方法
*Activity.runOnUIThread(Runnable)
*View.post(Runnable),View.postDelay(Runnable,long)
*Handler
*AsyncTask

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