Android中运行任务和运行进程之间的区别
任何人都可以告诉我Android和Task中的任务和进程有什么区别。 如果我使用这段代码片段。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)
之间的差异。
请帮帮我。 问候
如果没有正在运行的进程(它不会返回一个空列表)返回RunningAppProcessInfo记录列表,或者为null。此列表排序未指定。
返回的当前正在运行的任务列表,其中最近的是第一和旧的,为了以后。请注意,“运行”并不意味着任何任务的代码当前已加载或活动 - 该任务可能已被系统冻结,以便在下一次进入前台时以前一状态重新启动该任务。
更新:
现在任务和过程之间的差。
在Android中,一个任务是一组或一组活动。其全部是关于用户与这些活动的交互。 Android将这些活动保存在堆栈中,因此它们被打开并维护这个堆栈。可能是一个堆栈或多个堆栈,最后一个打开的堆栈顶部的活动。它让android维护系统的状态。应用程序在打开活动时有其自己的任务,如果新应用程序启动,系统会在LIFO结构中创建一个新任务,并带有新活动。当用户在主屏幕上与此任务交互时,他只是导航到特定的应用程序,此应用程序的任务现在成为前台。
虽然Process与Android应用程序组件有关。每个新的Android应用程序都在其自己的用户空间中的新Process(Linux Process)中启动。所有应用程序组件默认都在相同的Process上运行。它作为单线程进程执行。这就是为什么它被称为主线程的应用程序。但是在这里,您可以使用清单属性android:process
为不同的android应用程序组件定义单独的进程,例如Activity,Service,Provider或Broadcast Receiver。 Android Process与使用UserId的Linux Process具有相同的基础,因此您可以将在同一进程上运行的不同Android应用程序组件与相同的UserId结合使用。
所以,当你调用getRunningAppProcesses()
它会给你所有运行Android应用程序的进程相关的运行应用程序组件。
而且getRunningTasks (int maxNum)
为您提供了通过系统的不同运行的应用程序创建的任务列表,而用户与应用程序交互。
上一个“答案”是将另一个未知主题替换为另一个未知主题。问题是关于系统定义,而不是关于如何接收相关信息以及方法和类之间的区别。
其实在Android任务=应用程序中是一组活动。
进程通过内存分隔进行划分,并且是一组运行的线程是分开的内存。
默认情况下应用程序是一个进程。开发人员可以通过在“活动”,“服务”,“接收者”和清单时间内可执行单元的其他定义中使用“android:process”属性来定义进程的另一个分离。
请参阅http://developer.android.com/guide/components/processes-and-threads.html
Android有Linux内核。所以过程与Linux中的过程类似。每个进程可以有多个线程。当一个进程启动时,默认情况下是单线程执行。这个线程被称为主线程或UI线程。您可能在进程中运行其他工作线程或异步线程。
另一方面,任务或应用程序可以被视为一组应用程序中的活动。任务中的每个活动都可能配置为在不同的进程中运行。与其他权利的Android服务,提供者等相同。不同任务/应用程序的Infact组件可以运行在相同的进程中(前提是应用程序共享相同的Linux用户标识并使用相同的证书进行签名)。
当系统内存不足以运行应用程序时,旧的进程被终止。再次注意,这可能包含不同应用程序的组件。
activityManager.getRunningTasks(Integer.MAX_VALUE)
上面会给你正在运行的任务或者说让把它应用由一系列的活动。 (列表RunningTaskInfo
对象)。这反过来将有两个主要的事情。
- baseActivity:
- topActivity在任务中启动的第一个活动组件:在任务的历史堆栈的顶部活性成分
和
activityManager.getRunningAppProcesses()
上面会给系统中的所有正在运行的进程。由于它是一个进程,因此它将关联pid
(processId)和`uid(userId)。这里的某些重要领域是 -
- processName:这个对象与
- PID相关联的进程的名称:该进程的PID;如果没有,则返回0
- uid:此进程的用户标识。
- pkgList:所有已加载到进程中的软件包。
这个答案只是复制粘贴从页面原来的问题派生而来。另外两个答案解释它换句话说。 – Bamerza
@Bamerza - 实际上之前的答案与更新前的问题有关。感谢您的意见,我根据新的主题和问题信息更新了答案。 – user370305