用活动对象来替代多线程实现多任务处理的原因包括以下几点:
1、 智能手机的系统资源相当有限,在同一个线程中运行活动对象之间切换的代价要比线程上下文切换代价低,活动对象之间的切换比线程间的切换快将近10倍。
2、一个线程的内存开销为 12KB(4KB的内核空间开销 + 8KB的用户空间开销),而一个活动对象的大小仅为几百字节,或更小。
3、使用抢占式的线程调度对于事件处理而言也不方便,因为抢占式多线程需要通过互斥体或是信号量来对共享资源进行同步,而活动对象由于是非抢占式的,不需要对共享资源进行同步保护。
4、另外,由于活动对象在同一个线程中运行,所以可以更容易的共享内存。
活动对象的缺点是非抢占带来的对实时性的保证没有多线程调度来的高