任何人都可以告诉我Android中的任务和流程有什么区别。 如果我使用此代码段。
ActivityManager Appmgr;
protected List<ActivityManager.RunningTaskInfo> apps;
protected List<ActivityManager.RunningAppProcessInfo> applications;
applications = Appmgr.getRunningAppProcesses();
apps = Appmgr.getRunningTasks(30);
applications = Appmgr.getRunningAppProcesses()
和apps = Appmgr.getRunningTasks(30)
之间的区别是什么。
请帮帮我。 此致
答案 0 :(得分:8)
之前的“答案”是另一个未知主题的替换。问题是关于系统定义,而不是关于如何接收相关信息以及方法和类之间的差异。
实际上在Android task = application中是一组活动。
进程是按内存分离划分的,并且运行的线程集是分开的内存。
默认情况下,应用程序是一个过程。通过使用“活动”,“服务”,“接收器”中的“android:process”属性以及清单时间内可执行单元的其他定义,开发人员能够通过进程定义另一个分离。
请参阅http://developer.android.com/guide/components/processes-and-threads.html
答案 1 :(得分:7)
返回RunningAppProcessInfo记录的列表,如果没有正在运行的进程,则返回null(它不会返回空列表)。未指定此列表排序。
返回当前正在运行的任务列表,其中最新的是第一个和更早的任务。请注意,“运行”并不意味着任何任务的代码当前已加载或活动 - 该任务可能已被系统冻结,因此可以在下次将其置于前台时以其先前状态重新启动。
更新:
现在任务与流程之间存在差异。
在Android中,任务是一组或者你可以说是一系列活动。它完全与用户与这些活动的互动有关。 Android在堆栈中维护这些活动,因此它们被打开并维护这个堆栈。可能是一个堆栈或多个堆栈,最后一个堆栈顶部打开的活动。并且它具有android维护系统的状态。应用程序有自己的任务,它打开了活动,如果新应用程序启动,系统会在LIFO结构中创建一个带有新活动的新任务。当用户在主屏幕上与此任务交互时,他只是导航到特定应用程序,此应用程序的任务现在变为前景。
虽然Process与Android应用程序组件有关。每个新的Android应用程序都在自己的用户空间中以新的Process(Linux Process)开始。默认情况下,所有应用程序组件都在相同的进它作为单线程进程执行。这就是它被称为应用程序主线程的原因。但是在这里,您可以使用清单属性android:process
为不同的Android应用程序组件定义单独的进程,例如Activity,Service,Provider或Broadcast Receiver。 Android Process与Linux Process with UserId具有相同的基础,因此您可以将在同一进程上运行的不同Android应用程序组件与相同的UserId组合在一起。
因此,当您致电getRunningAppProcesses()
时,它将为您提供与运行应用程序组件相关的所有正在运行的Android应用程序。
getRunningTasks (int maxNum)
在用户与应用程序交互时,为您提供系统为不同运行的应用程序创建的任务列表。
答案 2 :(得分:3)
Android拥有Linux内核。因此,流程类似于Linux中的流程。每个进程可以有多个线程。进程启动时默认为单线程执行。该线程称为主线程或UI线程。您可能在进程中运行其他工作线程或异步线程。
另一方面,任务或应用程序可以显示为应用程序中的一组活动。任务中的每个活动都可能配置为在不同的进程中运行。同样适用于Android的其他权利 - 服务,提供商等。不同任务/应用程序的实际组件可以在同一进程中运行(前提是应用程序共享相同的Linux用户ID并使用相同的证书进行签名)。
当系统内存运行应用程序不足时,旧的进程将被终止。再次注意,这可能包含不同应用的组件。
activityManager.getRunningTasks(Integer.MAX_VALUE)
上面将为您提供正在运行的任务,或者更确切地说,将其称为包含一组活动的应用程序。 (RunningTaskInfo
个对象列表)。这反过来将有两个主要的事情。
和
activityManager.getRunningAppProcesses()
上面将给出系统中所有正在运行的进程。由于它是一个进程,它将具有关联的pid
(processId)和`uid(userId)。这里的一些重要领域是 -