android多线程与多进程
一.Android进程的分类:
(1)前台进程:即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的;
(2)可见进程:可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失去了焦点而不能与用户交互;
(3)服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户关系的,例如用户正在非音乐界面听的音乐或者正在非下载页面自己下载的文件等;当系统要用空间运行前两者进程时才会被终止;
(4)后台进程:其中运行着执行onStop方法而停止的程序,但是却不是用户当前关心的,例如后台挂着的QQ,这样的进程系统一旦没有内存就首先被杀死;
(5)空进程:不包含任何应用程序的程序组件的进程,这样的进程系统是一般不会让他存在的;
二.进程与多线程的深入
1.由于单线程而导致的ANR错误:
ANR错误(Application Not Responding),指主UI进程被阻塞超过5秒钟而出现的错误,它会终止程序的正常运行,我们要避免它 ,而产生ANR错误的原因就是:单线程。
2.Android线程之间的通信——Handler
其实,Android线程之间的通信不只是Handler,还需要Message,MessageQueue,Looper的相互使用,Android线程通信模型如下:
(1)Message:即要传递的消息;
(2)MessageQueue:存放消息的队列;
(3)Looper:用于创建MessageQueue以及循环使用其中的Message;
(4)Handler:用于消息的传递了;