Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1078046
  • 博文数量: 403
  • 博客积分: 10272
  • 博客等级: 上将
  • 技术积分: 4407
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:22
文章分类

全部博文(403)

文章存档

2012年(403)

分类: 嵌入式

2012-03-06 16:29:29

/********************************************************************************************
 * 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文件,就可以安排应用程序组件运行在哪个进程里面了。


组件元素有如下几种:

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

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

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

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

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


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

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


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

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


2、进程与线程的区别


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

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


阅读(501) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~