本文转自:http://www.mobiletrain.org/lecture/doc/android/2011-05/457.html

大家都用过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. Android(安卓)EventBus 通信
  2. 【Android】EventBus源码解析(3.1.1)
  3. android直接找一个文件,部分编译等实用
  4. Android中对Handle机制的理解
  5. Android(2017-2018)BAT面试题整理(Java篇,含答案)
  6. Android(安卓)Audio System 之二:AudioFlinger
  7. Android(安卓)IntentService使用
  8. Android的线程使用来更新UI----Thread、Handler、Looper、TimerT
  9. android message机制

随机推荐

  1. 我常用的IDEA插件大公开,个个是精品!
  2. Kubernetes 原生 CI/CD 构建框架 Argo 详
  3. 5A的成绩通过PMP考试,意外的惊喜
  4. 《大型网站系统与Java中间件》读书笔记 (
  5. 什么是jQuery?
  6. Python运算符分为哪几类?Python学习系列!
  7. 【3y原创】什么是保险
  8. 我常用的自动化部署技巧,贼好用,推荐给大家
  9. Github标星34K+Star,这款开源项目助你秒建
  10. SQL-JOINS用法说明