http://tieba.baidu.com/f?kz=1084895261

大家都用过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等。

千锋培训--android ddms中查看线程释疑相关推荐

  1. python千锋培训地址

    Hello,各位锋迷们,我是小千. 今天周日,给大家推荐千锋金牌讲师宋宋最新出品的一套Python办公自动化教程. 扫码一键直达B站课程学习地址: 传送门:https://m.bilibili.com ...

  2. 千锋培训的python怎么样学习内容有什么?

    众所周知,Python是人工智能时代的首选语言,近两年人工智能的兴起让Python一度成为最受欢迎的编程语言之一.想要学习Python的人也越来越多,那么千锋成都Python培训班怎么样?学习内容有什 ...

  3. Android Framework中的线程Thread及它的threadLoop方法

    当初跟踪Camera的代码中的时候一直追到了HAL层,而在Framework中的代码看见了许许多多的Thread.它们普遍的特点就是有一个threadLoop方法.按照字面的意思应该是这个线程能够循环 ...

  4. 如何在Android Studio中查看方法信息?

    本文翻译自:How can I view method information in Android Studio? In Eclipse, when you hover your mouse ove ...

  5. 【错误记录】Android Studio 中查看 Gradle 配置的方法源码 ( 配置 gradle-wrapper.properties 中版本为 gradle-x.x.x-all.zip )

    文章目录 一.报错信息 二.解决方案 Android Plugin DSL Reference 参考文档 : https://google.github.io/android-gradle-dsl/2 ...

  6. Android开发中的线程池使用

    一.前言 既然Android中已经有了线程的概念,那么为什么需要使用线程池呢?我们从两个方面给出使用线程池的原因. 首先线程的新建和销毁都是存在性能上的消耗的,如果一个时间段有大量的网络请求,那么就需 ...

  7. linux中查看线程的亲和性

    每个线程在创建时会有CPU亲和性设置,对于fio,存在一个参数-cpu_allowed,设置fio线程可以在哪些CPU上执行,而对于已经运行的任意线程如何查看CPU亲和性呢?其实也可以查到的,首先需要 ...

  8. [Android Memory] Android系统中查看某个应用当前流量的方法

    转载自: http://blog.sina.com.cn/s/blog_628cc2b70101dbyy.html 一.查看原理:某个应用的网络流量数据保存在系统的/proc/uid_stat/$UI ...

  9. eclipse中查看android源代码,Android Eclipse中查看 Android框架源码

    有时候用Eclipse想按住ctrl键查看源码怎么办? 下面具体步骤让你轻松看源码: project->properties->java build path->libraries ...

最新文章

  1. 裂痕第一至五季/以法之名Damages迅雷下载
  2. C# 学习笔记(17)操作SQL Server 上
  3. 内容组织高效项目方案是如何产生的 !
  4. Druid详细配置信息
  5. 2017 省赛选拨 想打架吗?算我一个!所有人,都过来!(3) 递推 斐波拉数列的应用...
  6. 什么是掼蛋游戏呼叫中心
  7. solid 设计原则 php,面向对象设计SOLID五大原则
  8. 数据结构之究竟什么是树
  9. scrapy操作指南
  10. drools规则引擎源码解析
  11. C#---委托与事件
  12. 敏捷转型中的敏态与稳态
  13. 开发到底要不要转行软件测试?
  14. android 方向传感器
  15. 论文阅读|Embodied Hands: Modeling and Capturing Hands and Bodies Together
  16. 字符串ASCII码的常用方法
  17. 解决 Python 报错SyntaxError: Missing parentheses in call to 'print'
  18. 怎样使用JPQL查询出每个部门员工的平均工资和最高工资
  19. 《统计学》——思考题第四章数据的概括性度量(贾俊平)
  20. 逻辑运算符以及逻辑表达式

热门文章

  1. 英特尔携手升腾,助力智慧金融业发展
  2. 从Maxwell方程组到波动方程
  3. ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下
  4. APP android 测试用例手册
  5. python离线翻译包下载_Python翻译
  6. springmvc 跨域访问
  7. 程序设计思维与实践月模拟题X3
  8. 中国钢丝绳行业竞争现状及需求前景预测报告(新版)2022-2027年
  9. 【Unity3D自学记录】 Unity3D游戏开发之键盘选取、切换目标
  10. Win10中的ERDAS 9.2安装(附下载链接)