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

Android中运行任务和运行进程的区别,android,Android,有谁能告诉我Android中任务和过程的区别吗。 如果我使用这个代码段 ActivityManager Appmgr; protected List<ActivityManager.RunningTaskInfo> apps; protected List<ActivityManager.RunningAppProcessInfo> applications; applications = Appmgr.getRunningAppProcesses(); apps = A

有谁能告诉我Android中任务和过程的区别吗。 如果我使用这个代码段

ActivityManager Appmgr;
protected List<ActivityManager.RunningTaskInfo> apps;
protected List<ActivityManager.RunningAppProcessInfo> applications;
applications = Appmgr.getRunningAppProcesses();
apps = Appmgr.getRunningTasks(30);
ActivityManager-Appmgr;
受保护的列表应用程序;
受保护名单申请;
applications=Appmgr.getRunningAppProcesses();
apps=Appmgr.getRunningTasks(30);
applications=Appmgr.getRunningAppProcesses()
apps=Appmgr.getRunningTasks(30)
之间有什么区别

请帮帮我。 问候

返回RunningAppProcessInfo记录的列表,如果没有正在运行的进程,则返回null(它不会返回空列表)。未指定此列表顺序。

:

返回当前正在运行的任务列表,最近的任务是第一个任务,后面的任务是较早的任务。请注意,“正在运行”并不意味着任务的任何代码当前已加载或处于活动状态——该任务可能已被系统冻结,以便下次被带到前台时可以在其先前状态下重新启动。

更新:

现在是任务过程之间的区别

在安卓系统中,任务是一组或可以说是一组活动。这一切都是关于用户与这些活动的交互。Android在堆栈中维护这些活动,因此它们被打开并维护该堆栈。可以是一个堆栈或多个堆栈,即堆栈顶部最后打开的活动。以及android如何维护系统的状态。应用程序有自己的任务和打开的活动,如果新应用程序启动,系统将在后进先出结构中创建具有新活动的新任务。当用户在主屏幕上与该任务交互时,他只需导航到特定的应用程序,该应用程序的任务现在就成为前景

而进程与Android应用组件相关。每一个新的Android应用程序都是在它自己的用户空间中的新进程(Linux进程)中启动的。默认情况下,所有应用程序组件都在同一进程上运行。它以单线程进程的形式执行。这就是为什么它被称为应用程序的主线程。但在这里,您可以使用manifest属性
android:process
为不同的android应用程序组件定义单独的流程,如活动、服务、提供者或广播接收器。Android进程和Linux进程具有相同的用户ID,所以您可以使用相同的用户ID组合运行在同一进程上的不同Android应用程序组件

因此,当您调用
getRunningAppProcesses()
时,它将为您提供所有运行Android应用程序的进程,这些进程与运行应用程序组件相关

当用户与应用程序交互时,getRunningTasks(int maxNum)为您提供系统为不同运行的应用程序创建的任务列表。

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

实际上在Android任务=应用程序中,是一组活动

进程是按内存分隔的,运行的线程集是按内存分隔的

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


请参见

Android拥有Linux内核。所以进程与Linux中的进程类似。每个进程可以有多个线程。当进程启动时,默认情况下是单线程执行。此线程称为主线程或UI线程。进程中可能有其他工作线程或异步线程在运行

另一方面,任务或应用程序可以可视化为应用程序中的一组活动。任务中的每个活动都可能配置为在不同的进程中运行。Android的其他权利也一样——服务、提供商等。不同任务/应用程序的实际组件可以在同一进程中运行(前提是应用程序共享相同的Linux用户ID,并使用相同的证书签名)

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

activityManager.getRunningTasks(Integer.MAX_VALUE)
上面将为您提供正在运行的任务,或者更确切地说,让我们称之为由一组活动组成的应用程序。(运行任务信息的
对象列表)。这又有两个主要方面

  • baseActivity:作为任务中的第一个活动启动的组件
  • topActivity:任务历史堆栈顶部的活动组件
  • 上面将给出系统中所有正在运行的进程。由于它是一个进程,因此它将具有关联的
    pid
    (processId)和'uid(userId)。这里的一些重要领域是——

  • processName:与此对象关联的进程的名称
  • pid:该流程的pid;如果没有,则为0
  • uid:此进程的用户id
  • pkgList:已加载到进程中的所有包

  • 这个答案只是从原始问题衍生出来的页面上复制粘贴的。其他两个答案解释了“换句话说”。@Bamerza-事实上,之前的答案与更新前的问题有关。谢谢你的评论,我已经根据新的主题和问题信息更新了答案。
    activityManager.getRunningAppProcesses()