Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> android ddms中查看線程釋疑

android ddms中查看線程釋疑

編輯:初級開發

大家都用過ddm,如果你用ddms查看一個程序的所有線程,你會發現
Signal Catcher
Heap Worker
main thread
binder thread #1
binder thread #2
那這些線程都是用來做什麼的呢?
我來給大家介紹一下android中的線程

在android系統中,Java層和c++/c層都可以創建線程。不過Java層創建的線程最終都由c++/c層來實現。使用ddms這個工具可以查看虛擬機實例進程(除zygote本身和由native code創建的進程,比如vold外)所包含的線程大致信息。比如線程名字,id號,狀態,user time和system time等。
大家可以看到一般一個虛擬機實例進程都包含有如下7個通用的線程,下面大致講一下這些線程的作用和創建流程。
1. main
這個就是主線程了。具體流程待細述。
2. HeapWorker
一個異步的工作線程,處理那些需要在單獨線程裡面做的避免同步問題的堆操作。其源代碼在dalvik/vm/alloc/HeapWorker.*部分。
3. Signal Catcher
這個線程是用來捕獲Linux信號和做一些後續處理的。比如說,當一個SIGQUIT (Ctrl-\)信號到達後,這個線程就會掛起虛擬機,並且將所有線程的狀態信息輸出到log。其源代碼在dalvik/vm/SignalCatcher.*部分。
4. JDWP
這個線程是用來實現Java Debug Wire Protocol的。如果命令行調試器的參數為"suspend=y",這樣會暫停虛擬機。這個估計和eclipse的調試和ddms等調試工具相關。其源代碼在dalvik/vm/jdwp/*部分。
5. Stdio Converter
這個線程從標准輸出和標准錯誤輸出讀取信息並將它們轉換為log信息。其源代碼在dalvik/vm/StdioConverter.*部分。
6. Compiler
android's Jit獨立於目標平台的部分。其源代碼在dalvik/vm/compiler/Compiler.*和dalvik/vm/interp/Jit.*等部分。
7. Binder Thread #%d
使用binder進行通訊時用到的線程。其源代碼在frameworks/base/libs/binder/*等部分。
以下的線程屬於system_server和應用程序專有線程,視具體應用的需求而定。
8. system_server專有
android.server.ServerThread
ActivityManager
ProcessStats
PackageManager
FileObserver
AccountManagerService
SyncHandlerThread
UEventObserver
PowerManagerService
AlarmManager
WindowManager
InputDeviceReader
WindowManagerPolicy
InputDispatcher
ConnectivityThread
WifiService
WifiWatchdogThread
LocationManagerService
AudiOService
GpsEventThread
GpsNetworkThread
android.hardware.SensorManager$SensorThread
watchdog
Wallpaper
com.android.server.MountListener
9. misc
其他部分線程由Java層的api提供,Thread等。

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