`
isiqi
  • 浏览: 16594238 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Android中TASK和PROCESS的区别,获取最近运行的程序和正在运行的进程

阅读更多

Android中关于任务和进程的概念有点混淆,网上看到一篇说得很好的文章,摘过来记录一下~~~

http://bbs.sjtu.edu.cn/bbstcon,board,MobilePhone,reid,1288709685,file,M.1288709685.A.html

我的个人理解:
首先你看到的不是进程(process),是任务(Task)。
用终端,输ps,可以看到真正的运行中的linux process,我的milestone上一般会有90
多个。
Android里,app和process和task是三个完全不同的概念……
process是一个继承自Linux的概念,一般一个app会有一个uid,需要时会独立地开一个p
rocess。有些process是作为app的容器的,其它process是底层linux用到的。同时,虽
然很少见,也会有多个app共享一个process或者uid。
task是一个activity的栈,其中"可能"含有来自多个App的activity,也就是来自多个p
rocess,杀task一般是关闭Task的根activity引出的子树,不一定会连带kill掉对应的
process。

所以这三个东西是会混在一起的,没有windows或者其它os中那么清晰的进程边界。

API中,关于获得运行中的那些东西,有一个类ActivityManager,它可以:
getRecentTasks() 最近开的task,HOME键长按会看到这个
getRunningAppProcesses() 运行中的作为app容器的process。
getRunningServices() 运行中的后台服务
getRunningTasks() 运行中的任务


所以即使在API中,这些东西也不统一。
如果一个activity A不是作为task的root activity而是被别的task调用,那么A对应的p
rocess是开着的,这时是否显示它呢?
另外,如果一个app只有service开着而没有Activity或者task,算不算开着呢?

加上不同的killer可能会有不同的对系统关键进程或者关键服务的过滤方式,这可能也
会增加一定程度的混乱。

说到底,android里原本就没有别的os中那么清晰的任务概念,这些概念都是那些程序自
己定义出来的,所以比较混乱……

获取最近运行的程序列表:

获取正在运行的进程列表:

分享到:
评论

相关推荐

    Android 低版本和高版本获取后台运行进程

    从Android 6.0(API Level 23)开始,系统引入了运行时权限管理,获取运行进程信息可能需要`GET_TASKS`权限。如果应用的目标SDK版本是23或更高,你需要在运行时请求这个权限。 4. **注意事项** 尽管可以通过`...

    Android中获取系统内存信息以及进程信息

    在Android系统中,开发者可以通过Android提供的API来获取系统的内存信息以及正在运行的进程状态。这一功能主要涉及到`ActivityManager`类的使用。`ActivityManager`是Android SDK中的一个关键组件,它提供了对系统...

    获取当前运行的程序

    在AndroidProcess-master这个项目中,开发者可能已经实现了一个示例,展示了如何使用上述方法来获取和展示正在运行的程序。通过分析源代码,我们可以学习如何在实际项目中整合这些功能。 总结来说,获取Android设备...

    android上的进程管理软件

    在Android操作系统中,进程管理是系统资源调度的关键部分,它涉及到应用程序的运行、内存的分配以及用户界面的响应性。本项目"android上的进程管理软件"提供了一个初级开发者研究和理解Android进程管理机制的实例。...

    Android Task Manager Download

    Android Task Manager是一款用于管理Android设备上运行任务和进程的应用工具,它允许用户查看并控制手机上的应用程序及其后台进程。在深入探讨这个话题之前,我们先了解一下Task Manager的基本概念。 在Android系统...

    Android Task Manager 实做

    在Android系统中,任务管理器(Task Manager)是至关重要的组件,它负责管理和调度应用程序的任务,确保系统的稳定运行。本文将深入探讨如何实现一个自定义的Android Task Manager,以及涉及的相关技术点。 首先,...

    android进程和新城之间的通信

    在Android系统中,进程和线程的通信是应用程序运行的核心组成部分。Android系统为每个应用程序启动一个单独的Linux进程,这个进程在默认情况下承载了应用程序的所有组件,如Activity、Service等。每个应用程序至少有...

    android实现获取正在运行的应用程序

    在Android平台上,获取正在运行的应用程序是一个常见的需求,这通常涉及到对系统进程的监控和管理。在提供的描述和代码片段中,我们看到一个名为`ManagerTasksActivity`的自定义`Activity`类,它用于展示当前运行的...

    Android中Activity四种启动模式和taskAffinity属性详解-Rong

    首先,让我们来了解一下Android中的Application、Task和Process的区别与联系。Application是指一个应用程序的整体,它是若干个组件(如Activity、Service、BroadcastReceiver和ContentProvider)的集合。每一个...

    Android_进程任务线程[参照].pdf

    在Android系统中,进程、任务和线程是构成应用程序运行的基础元素。理解这些概念对于开发者来说至关重要,因为它们直接影响到应用的性能、内存管理和用户体验。 首先,我们来谈谈进程(Process)。在Android中,每...

    Android程序开发概述

    Process是Android系统中资源分配和管理的基本单位,每个应用默认拥有自己的进程,但多个应用也可以共享一个进程以节省系统资源。线程和进程的选择需要根据应用需求和性能考虑。 4. **组件的生命周期**: 每个应用...

    安卓Android源码——任务管理器源码.zip

    2. **Process和AppProcess**: 在Android中,每个应用程序都运行在一个单独的进程中。Process类代表了这些进程,而AppProcess类则是应用程序进程的起点,它负责启动和销毁应用程序进程。 3. **Activity Stack**: ...

    同一个任务中的活动(Activity),分别隶属于两个进程

    在Android系统中,一个应用程序通常默认运行在一个单独的进程中,但是开发者可以根据需求将不同的组件,如Activity,分配到不同的进程中。本话题将深入探讨“同一个任务中的活动(Activity),分别隶属于两个进程”...

    Android参考源码-强行结束APP进程的方法.zip

    在Android系统中,结束一个应用进程并非简单的点击“退出”按钮即可实现,它涉及到操作系统对应用程序生命周期的理解和管理。在Android源码中,有多种方式可以实现强制结束APP进程,这些方法通常由系统或者开发者在...

    042集-跨进程启动Activity和设置Activity多个入口

    在Android开发中,进程是应用程序运行的基本单位,而Activity作为用户界面的核心组件,通常与特定的进程关联。本集视频“042集-跨进程启动Activity和设置Activity多个入口”将深入探讨如何在不同进程中启动Activity...

    Android结束进程的方法详解

    调用`android.os.Process.myPid()`可获取当前进程的PID,然后传递给`killProcess()`。 文档中提到,只有当被杀进程与当前进程属于同一应用或具有共享UID的应用才能使用此方法。这意味着它主要适用于结束应用的附加...

    Android判断App前台运行还是后台运行(运行状态)

    - **进程(Process)**:在Android系统中,每个应用程序通常运行在一个独立的Linux进程中。进程是操作系统分配资源的基本单位,具有独立的内存空间。 - **UID(User ID)**:每个Android应用程序都有一个唯一的UID...

Global site tag (gtag.js) - Google Analytics