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系统不会为每一个组件创建一个线程。

  1. <application  
  2.         android:icon="@drawable/ic_launcher"  
  3.         android:label="@string/app_name" >  
  4.         <activity  
  5.             android:label="@string/app_name"  
  6.             android:name=".TimerActivity" >  
  7.             <intent-filter >  
  8.                 <action android:name="android.intent.action.MAIN" />  
  9.   
  10.                 <category android:name="android.intent.category.LAUNCHER" />  
  11.             </intent-filter>  
  12.         </activity>  
  13.     </application>  

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


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

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


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

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


2、进程与线程的区别


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

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

 

转自:http://blog.csdn.net/conowen/article/details/7276848

posted @ 2012-06-04 16:56  hnrainll  阅读(433)  评论(0编辑  收藏  举报