Android性能优化——线程优化

Android线程调度机制

线程调度机制

  • 分时调度模型:所有的线程轮流获得CPU使用权,平均分配每个线程占用的CPU时间
  • 抢占式调度模型:优先让可运行池中的优先级高的线程占用CPU,优先级相同随机选择一个线程

Android线程调度机制
Android的线程调度机制是抢占式调度模型
线程优先级(nice):默认情况下,新创建的线程的优先级默认与母线程一致
线程分组:Android还分前台线程与后台线程

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)

Android异步方式

  • Thread:直接创建一个线程
  • AsyncTask:为UI线程与工作线程之间进行快速的切换提供一种简单便捷的机制。适用于当下立即需要启动,但是异步执行的生命周期短暂的使用场景()
  • handerThread:为了某些回调方法或者等待某些任务的执行设置一个专属的线程,并提供线程任务的调度。(handerThread继承了Thread+handler机制)参考文章:手把手教你使用HandlerThread
  • ThreadPool:把任务分解成不同的单元,分发到各个不同的线程上,进行同时并发处理。
  • IntentService:适合用于执行由于UI触发的Service任务,并可以在后台任务执行的情况通过一定的机制反馈给UI(IntentService继承自Service,里面用的是HandlerThread)
  • Loaders:Android系统提供了LoaderManager(里面用的AsyncTask)

Android线程优化

  • 线程指定线程名,对线程分组便于问题排查
  • 合理指定线程优先级
  • 采用线程池复用线程
  • 合适的场景选择合适的异步方式
  • 控制整个应用的总线程数量,应用各个模块复用线程
  • 不再使用的HandlerThread需要退出
  • 不要直接使用创建线程,应该采用线程池

猜你喜欢

转载自blog.csdn.net/yanwenyuan0304/article/details/106813636