Android 线程梳理

Android 线程梳理

Android 进程梳理


APP 进程的线程

  • Heap thread poo 异步的HeapWorker, 包含5个
  • Signal Catcher 捕捉Kernel信号,比如SIGNAL_QUIT
  • JDWP 虚拟机调试的线程
  • ReferenceQueueD 用于GC
  • FinalizerDaemon 用于GC
  • FinalizerWatchd 用于GC
  • HeapTrimmerDaem 用于GC
  • GCDaemon 用于GC
  • Binder_1 用于IPC
  • Binder_2 用于IPC
  • pool-m-thread-n 线程池m中的第n个线程,包含若干个
  • AsyncTask #1 异步任务
  • RenderThread 渲染线程
  • WifiManager 管理wifi的线程

SystemServer 进程的线程

  • Input

    • 是 SystemServer 线程里面非常重要的一部分,主要是由 InputReader 和 InputDispatcher 这两个 Native 线程组成
  • 窗口动画

    • 由于窗口归 SystemServer 来管,那么窗口动画也就是由 SystemServer 来进行统一的处理,其中涉及到两个比较重要的线程,Android.Anim 和 Android.Anim.if 这两个线程
    • Android P 里面,应用的启动动画由 Launcher 和应用自己的第一帧组成,之前是在 SystemServer 里面的,现在多任务的动画为了性能部分移到了 Launcher 去实现
  • ServiceThread:ServiceThread 继承自 HandlerThread ,下面介绍的几个工作线程都是继承自 ServiceThread。每个 Thread 都有自己的 Looper 、Thread 和 MessageQueue,互相不会影响。

    • UiThread
    • IoThread
    • DisplayThread
    • AnimationThread:名字叫 android.anim。WindowAnimator 的动画执行也是在 AnimationThread 线程中的,Android P 增加了一个 SurfaceAnimationThread 来分担 AnimationThread 的部分工作,来提高 WindowAnimation 的动画性能
    • SurfaceAnimationThread:名字叫 android.anim.lf。分担 android.anim 线程的一部分动画工作,减少由于锁导致的窗口动画卡顿问题
    • FgThread
  • RenderThread 渲染线程

  • ActivityManagerService

    • 与 AMS 相关的 Trace 一般会用 TRACE_TAG_ACTIVITY_MANAGER 这个 TAG,在 Systrace 中的名字是 ActivityManager
  • WindowManagerService

    • 与 WMS 相关的 Trace 一般会用 TRACE_TAG_WINDOW_MANAGER 这个 TAG,在 Systrace 中 WindowManagerService 在 SystemServer 中多在对应的 Binder 中出现,比如下面应用启动的时候,relayoutWindow 的 Trace 输出
    • 在 Window 的各种场景一般都会有对应的 Trace 点来记录,比如大家熟悉的 relayoutWIndow、performLayout、prepareToDisplay 等
  • PackageManager PKMS线程

  • PowerManagerSer PMS线程

  • HandlerThread

    • BackgroundThread,om/android/internal/os/BackgroundThread.java。BackgroundThread 在系统中使用比较多,许多对性能没有要求的任务,一般都会放到 BackgroundThread 中去执行
  • Binder

    • 很多时候当后台有大量的 App 存在的时候,SystemServer 就会由于 Binder 通信和锁竞争,导致系统或者 App 卡顿
    • Binder_ IPC线程, 包含16个
  • system_server 包含4个此同名线程

  • Heap thread poo 异步的HeapWorker, 包含5个

  • Signal Catcher 捕捉Kernel信号,比如SIGNAL_QUIT

  • JDWP 虚拟机调试的线程

  • watchdog 看门狗线程

  • CpuTracker 统计进程CPU信息

  • PerformanaceCont system_server专有

  • FileObserver system_server专有

  • WifiMonitor system_server专有

  • UEventObserver system_server专有

  • Thread_ 普通线程,包含若干个

  • AsyncTask # 异步任务,包含若干个

JVM 中的线程

  • Mutator 修改器线程,指任何可以修改Heap的线程,一般指应用业务线程。往往是Java线程
  • Collector 垃圾回收的线程,往往不是Java线程
  • JIT编译线程,单独的线程
  • 处理finalization和weak-referencing的线程,往往是单独的线程

Zygote 进程的线程

  • ReferenceQueueD 引用队列的守护线程
  • FinalizerDaemon 析构的守护线程
  • FinalizerWatchd 析构监控的守护线程
  • HeapTrimmerDaem 堆整理的守护线程
  • GCDaemon 执行GC的守护线程

mediaserver 进程的线程

  • mediaserver
  • ApmTone
  • ApmAudio
  • ApmOutput
  • Safe Speaker Th
  • AudioOut_2
  • FastMixer
  • AudioOut_4
  • FastMixer
  • AudioOut_6
  • Binder_1
  • Binder_2
相关推荐
阿巴斯甜7 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker8 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95279 小时前
Andorid Google 登录接入文档
android
黄林晴10 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android