您的位置:首页 > 移动开发 > Android开发

简单解释Android中的任务、进程和线程

2011-05-28 14:39 357 查看
一、任务
要解释什么是Android中的任务,需要提到应用程序(application)和Activity。
Activity:Android中最基本的应用程序组件。一个Activity通常就是一个单独的屏幕,用于呈现数据和与用户进行交互。
应用程序:比如说qq软件就是一个应用程序,通常由多个Activity组成。
有了上面两个概念,就可以很好理解任务了。一个Android任务通常会涵盖多个Activity,而这些Activity可能分别属于不同的应用程序(application)。
从Activity的角度来说,任务就是Activity的堆栈。

Activity和任务那点事儿
Activity和任务的关联、任务中Activity的行为方式都被启动那个Activity的Intent对象中设置的一系列flags和manifest文件中Activity的<Activity>元素的一系列属性之间的交互所控制。
intent flags:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
FLAG_ACTIVITY_SINGLE_TOP
<Activity>属性:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch

启动任务:
当一个Activity指定了一个”android.intent.action.MAIN“作为动作、”android.intent.category.LAUNCHER“作为类别的intent过滤器时,它会被设置为一个任务的入口点。
如果不想让用户再次返回一个Activity,将finishOnTaskLaunch设置为”true“

二、Android进程
组件运行所在的进程由manifest文件来控制。组件元素如<Activity>、<service>、<receiver>、<provider>都有一个进程属性来指定组件应当运行于哪个进程之内。<Application>元素也有一个进程属性,设定所有组件的进程属性默认值。

三、Android线程
Android线程在代码中以标准的java thread对象创建。Android提供了很多便于管理线程的类:looper用于在线程中运行一个消息循环,handler用于处理消息,handlerthread用于使用一个消息循环启用线程。

其实android进程和线程和在linux里没有什么区别。

PS:
通常意义下的线程与进程
线程是进程的一个实体,是CPU 调度和分配的基本单位,其本身不拥有系统资源,只含有程序计数器、寄存器和栈等一些运行时必不可少的基本资源。同属一个进程的线程共享进程中的全部资源。
进程是系统资源分配时的一个基本单位,拥有一个完整的虚拟空间地址。
系统在运行的时候会为每个进程分配不同的内存区域。
线程组只能共享资源,即除了CPU外,计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: