在android开发中,有两条很重要的编程准则

  • 不要堵塞ui线程
  • 不要在非ui线程操作ui控件

开发者必须这两个遵守单线程模型的准则,将耗时的逻辑转移到非ui线程进行,得出计算结果后,通知ui线程进行数据的展现。本文介绍一下android的异步编程。

android线程模型

同hotspot vm一样,在daivlk vm中,采取的是1:1线程模型,每一个android thread对应一个Native Linux thread;linux内核通过cfs(completely fair scheduler)来进行线程调度,在cfs中着影响一个线程时间分配的因素有两个:

  • thread priority
  • thread group

thread group

线程的thread group是动态改变的,在android framework层面,android的应用有5个等级,分别是

  • foreground process
  • visible process
  • service process
  • backgroud process
  • empty process

它们的thread …


查看全文
Posted by zhengwen