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

一、任务

要解释什么是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里没有什么区别。