/********************************************************************************************
* 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        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:label="@string/app_name"            android:name=".TimerActivity" >            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>

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


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

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


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

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


2、进程与线程的区别


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

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


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

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


更多相关文章

  1. 为android封装的百度定位组件
  2. android jni 多线程编程 join thread
  3. Android中获取当前进程名称
  4. Android安全模型之Android安全机制(进程通信)
  5. Android React Native自定义组件的流程
  6. Android -- Android Init进程的处理流程分析
  7. Android应用程序进程启动过程的源代码分析(1)

随机推荐

  1. android 中文乱码问题
  2. Android 使用Loader示例
  3. Android Gson的使用
  4. android之图文混排
  5. Android之布局
  6. Android切换语言
  7. android中的selector背景选择器
  8. Android(安卓)SurfaceView使用dirty rect
  9. android HAL简记
  10. H5做的商城客户端,效果很不错