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设备中,按Back键会将当前的Activity出栈销毁,而按HOME键却会将之隐藏到后台。如若有多个这样的程序这样操作,我们不知道后台到底有多少个正在运行的应用程序。此程序的目的就列举出后台正在运行的应用...
关于Android中的进程和线程文档,看完后对 Android里面的Task概念有更深的了解。
BPM4中ProcessDefinition、ProcessInstance、Execution、Task关系和区别
今天讲下如何定时执行后台任务。 主要使用到TimerTask,相信大家都用过,大家可以看下TimerTask的源码。这里是一个简单的TimerTaskDemo。
即使那个activitie可能来自不同的应用,Android也靠着把两个activity保存在同一个任务中来实现这种无缝的用户体验. 一个任务是用户在执行某种工作时所交互的activitie的集合.activitie们放置在一个栈("后退栈")中,...
详细讲解android task以及android四种加载模式。 测试及原理说明结合。
在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状 态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从...
介绍jbpm4里的processDefinition、processInstance和Task的使用方法。 代码里的注释的编码方式为utf-8
一个简洁、实用、方便的Android异步处理库,已应用到百万日活的线上项目中
引是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。很多人在回答进程的概念的时候,往往只会说它是一个运行的实体,而会忽略掉进程所占据的资源。比如...
EasyTask简单易用的PHP常驻内存多进程任务管理器含windows组件
android activity和taskandroid
2.一般一个app拥有一个uid,运行在一个进程里,如果app中给service等定义不同的uid,那Service就运行在另外一个进程里,也就是说uid就相当于进程的id一样,一个uid就代表一个进程;也可以几个app定义一个uid,那他们...
这是一个大佬的设计思路,主要用作参考用,用于android启动优化的操作,通过task来进行操作,值得借鉴!!分高但是值
� 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...
二、 应用程序的组成元素 2 1. Activity元素 2 2. Service元素 3 3. Broadcast receivers元素 3 4. Content providers元素 3 (一) 元素的激活 3 (二) 元素的去激活 4 (三) Manifest文件 4 (四) Intent 筛选 5 三、 ...
代码里面用新线程执行大量的task创建,发现在创建的时候导致UI失去响应,等task创建完毕,运行的时候,UI正常。 for (int i = 0; i ; i++) { //Func, string> taskfunc = test; //为什么会造成UI假死? Task...
进程项中可以查看正在使用的进程,每个进程都可以显示出详细的信息,服务管理中查看正在运行的服务,你可以启动或卸载服务,自动运行查看器能显示自动运行项及命令行,显示随系统启动而自动启动的程序。性能窗口可以...
WPF全局异常捕获Demo,防止程序运行过程中出现异常崩溃
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...