`
android_mylove
  • 浏览: 382040 次
社区版块
存档分类
最新评论

Android学习笔记(6)————Android的线程与进程

 
阅读更多

/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。
********************************************************************************************/

1、Android系统的进程(Processes)与线程(Thread):

1.1、进程与线程简述

当一个Android应用程序启动时,系统会启动一个Linux进程,并在此进程中,开启一个称为“main”的线程,也就是常说的主线程。主线程主管向用户界面控件派发事件。其中包含绘图事件。它也是你的应用与界面工具包(android.widget和android.view包中的组件)交互的地方,于是main线程也被称为(UI)界面线程,所以整个线程一般不能阻塞。

一般情况下,应用程序的组件都运行在这个Linux进程里面,但是也可以安排到其他进程里面运行。只要修改AndroidManifest文件,就可以安排应用程序组件运行在哪个进程里面了。


组件元素有如下几种:

<activity>、<service>、 <receiver>与<provider>

它们都有一个process属性的,可以设定为相对应的进程里面。

另外<application>也有一个process属性,可以设定这个application里面的所有组件运行在哪个进程里面。

默认情况下,这些组件都是在主线程里面的,Android系统不会为每一个组件创建一个线程。

总的来说,一般的application都是运行在同一个进程里面,而且所有的组件都在主线程里面。


1.2、Android系统自动关闭进程机制

但是有时候开始一些比较费时的程序。也就是说某些组件被系统调用了,但是长时间没有响应(超过5秒),导致主线程阻塞,后续组件不能执行。Android系统就会自动地把整个进程都给杀掉了。因此,我们需要在进程里面新开线程,让一些比较费时的组件运行在其他线程里面。这样就可以让主线程畅通,而不至于让Android系统关闭掉应用程序的进程。(没有自动关闭线程之说)


除此之外,Android系统也会自动地关闭一些其他的进程,在以下情况下进程可能会被关闭。

系统可用内存不足,同时又有一个正在为用户进行服务的进程需要更多内存的时候,Android可能会关闭一个进程。同时地,这个进程中运行着的应用程序也因此被杀掉了。当系统再次需要它们进行处理时,Android系统会为这些组件重新创建进程。至于Android会自动关闭哪个进程,就要看Android系统的定义了。


2、进程与线程的区别


(1)线程是进程内的一个执行单元,进程至少有一个线程。
(2)同一个进程内,线程共享进程的地址空间,而进程有自己独立的地址空间。
(3)线程是处理器调度的基本单位,但进程不是。

(4)二者均可并发执行。


3、Android中线程的管理请参看下一篇博文

Android学习笔记(7)————Android中的消息机制


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics