Android中运行任务与运行进程的区别

任何人都可以告诉我什么是在Android中的任务和过程之间的区别。 如果我使用这个代码片段。

ActivityManager Appmgr; protected List<ActivityManager.RunningTaskInfo> apps; protected List<ActivityManager.RunningAppProcessInfo> applications; applications = Appmgr.getRunningAppProcesses(); apps = Appmgr.getRunningTasks(30); 

什么是applications = Appmgr.getRunningAppProcesses()之间的差异applications = Appmgr.getRunningAppProcesses()apps = Appmgr.getRunningTasks(30)

请帮帮我。 问候

Solutions Collecting From Web of "Android中运行任务与运行进程的区别"

getRunningAppProcesses() :

返回RunningAppProcessInfologging的列表;如果没有正在运行的进程(不会返回空列表),则返回null。 此列表sorting未指定。

getRunningTasks(int maxNum) :

返回当前正在运行的任务列表,其中最近的是第一个和更早的任务。 请注意,“正在运行”并不意味着任何任务的代码当前已加载或活动 – 任务可能已被系统冻结,以便在下一次进入前台时以前一状态重新启动。

更新:

现在任务进程之间的区别。

在Android的一个任务是一组或者你可以说一个活动的集合。 所有关于用户与这些活动的交互。 Android将这些活动保存在堆栈中,因此它们被打开并维护这个堆栈。 可能是一个堆栈或多个堆栈,最后打开的堆栈顶部的活动。 它让android维护系统的状态。 应用程序在打开活动时有自己的任务,如果新的应用程序启动,系统会在LIFO结构中创build一个新的具有新活动的任务。 而当用户在主屏幕上与这个任务交互时,他只是导航到特定的应用程序,这个应用程序的任务现在成为前景。

Process与Android应用程序组件相关。 每个新的Android应用程序都在自己的用户空间中的新进程(Linux进程)中启动。 所有应用程序组件在默认情况下运行在相同的Process 它作为单线程进程执行。 这就是为什么它被称为主线程的应用程序。 但是在这里,您可以使用manifest属性android:process为不同的android应用程序组件(如Activity,Service,Provider或Broadcast Receiver)定义单独的android:process 。 Android Process与使用UserId的Linux Process具有相同的基础,因此您可以将具有相同UserId的不同Android应用程序组件组合在一起运行。

所以,当你调用getRunningAppProcesses()它会给你所有运行Android应用程序的进程相关的运行应用程序组件。

getRunningTasks (int maxNum)给出了当用户与应用程序交互时,系统为不同运行的应用程序创build的任务列表。

以前的“答案”是用另一个replace一个未知的主题。 问题是关于系统定义,而不是关于如何接收相关信息以及方法和类之间的区别。

其实在Android的任务=应用程序,是一组活动。

进程是通过内存分离来划分的,并且是运行的线程是分开的内存。

默认的应用程序是一个进程。 开发人员能够通过在“活动”,“服务”,“接收者”和其他清单时间内的可执行单元的定义中使用“android:process”属性来定义进程的另一个分离。

请参阅http://developer.android.com/guide/components/processes-and-threads.html

Android有Linux内核。 所以进程与Linux中的进程类似。 每个进程可以有多个线程。 当一个进程启动时,默认是单线程执行。 这个线程被称为主线程或UI线程。 您可能在进程中运行其他工作线程或asynchronous线程。

另一方面,任务或应用程序可以被视为一组应用程序中的活动。 任务中的每个活动都可能configuration为在不同的进程中运行。 不同任务/应用程序的Infact组件可以运行在相同的进程中(假设应用程序共享相同的Linux用户ID并且使用相同的证书进行签名)。

当系统内存低于运行应用程序时,较旧的进程将被终止。 再次注意这可能有不同的应用程序的组件。

 activityManager.getRunningTasks(Integer.MAX_VALUE) 

上面会给你正在运行的任务,或者让我们称之为由一系列活动组成的应用程序。 ( RunningTaskInfo对象的列表)。 这反过来将有两个主要的东西。

  1. baseActivity:作为任务中的第一个活动启动的组件
  2. topActivity:任务历史堆栈顶部的活动组件

 activityManager.getRunningAppProcesses() 

以上将给出系统中正在运行的所有进程。 由于它是一个进程,它将会有关联的pid (processId)和`uid(userId)。 这里的一些重要领域是 –

  1. processName:与此对象关联的进程的名称
  2. pid:这个过程的pid; 0如果没有
  3. uid:此进程的用户标识。
  4. pkgList:已经加载到进程中的所有包。