Android中的进程和pid

原创 2015年07月08日 18:10:40

 

 

Pid: Process ID 顾名思义,它指的是Process的id。每个进程都有一个独立的id,可以通过pid来区分不同的进程。

 

程序 vs 进程:

程序是静置的,一般会存放在磁盘中。经过用户的执行,程序会被触发,被加载到内存中成为一个个体:进程。

因此,可以说 进程就是一个正在运行的程序。 操作系统会对每一个进程赋予一个id,就是Pid。

 

以Linux上的 /bin/bash为例, /bin/bash是一段可执行程序。当有用户去执行 /bin/bash 时,系统就会创建一个相应的进程。

当然,不同的用户去执行这同样一段程序,会有不同的进程产生。

 

对于Android:

对于Android,这些特性是同样具有的,Android Os本来就是base Linux Kernel.

 只是从Android应用开发的角度来看,Android弱化了进程的概念。

在Android应用层的开发中,everything is component.  (Activity, Service, BroadcastReceiver, ContentProvider)

 

Android将 进程和组件 进行了剥离,这样可以方便开发。对于Android应用开发者,更多的关注是组件,却相对少关注进程。

 

Android OS通过AMS ( ActivityManagerSerivce) 来管理组件。(启动、关闭、维护 组件)

通过Binder为组件内的通信提供支持(进程内,进程间)

通过LMK(Low Memory Killer)在内存紧张时按照规则回收进程。

 

进程 Pid 相关的一些常用API:

 

android.os.Process.myPid( )

得到当前进程的pid

 

android.os.Process.killProcess ( int pid )

杀死相应进程号的进程

 

List<ActivityManager.RunningProcessInfo> getRunningAppProcesses( )

获取当前正在运行的进程

android.app.ActivityManager.RunningAppProcessInfo.pid

相应的RunningAppProcessInfo的pid

List<ActivityManager.RunningServiceInfo> getRunningServices ( int maxNum )

得到当前正在运行的ServiceInfo

android.app.ActivityManager.RunningServiceInfo.pid

相应的RunningServiceInfo的pid

 

By the way, ActivityManager还有一个类似的  getRunningTasks 接口,可以获取当前正在运行的Tasks.

List<ActivityManager.RunningTaskInfo> getRunningTasks

但是 从 API 21 (Android LL.  5.0 ) 开始,这个接口已经被限制使用了,因为google认为它可能会造成用户的隐私泄露。

第三方app再去调用该接口时,只会返回应用自身 或者 Launcher 两个Task信息。

替代方案可以参考:

http://blog.csdn.net/hyhyl1990/article/details/45700447

 

 

参考:

1. 《鸟哥的Linux私房菜》

2. 老罗 《Android组件设计思想》

3. http://developer.android.com/

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ANDROID 中UID与PID的作用与区别

ANDROID 中UID与PID的作用与区别 PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID...
  • wi__wi
  • wi__wi
  • 2016-04-06 20:10
  • 1423

如何在Android中取得当前进程名

在Android中,我们可以通过Process.myPid()和 RunningAppProcessInfo来取得当前的进程名。 示例1 String getCurProcessName...

Android源码内部编译过程总结(Make)(转)

Android的优势就在于其开源,手机和平板生产商可以根据自己的硬件进行个性定制自己的手机产品,如小米,LePhone,M9等,因此,在我们在对Android的源码进行定制的时候,很有必要了解下,An...

开关机压力测试APK学习

楼主身在一个手机方案公司,最近在查看一个开关机压力测试的APK,记录一下,学习一下别人的代码。功能单一,代码简单,谢谢! 布局界面较简单,一个ListView里面含有三个Textiew,一个设置总...

getRunningTasks API从Android LL开始 权限收敛

最近在做的一个小项目中,需要实时获取Activity栈顶以及它所属的App Process。 根据之前的了解,知道Android API有提供一个接口   public ListActivityMan...

Android中的UID和PID意义,及查看方式

Pid是进程ID,Uid是用户ID,只是Android和计算机不一样,计算机每个用户都具有一个Uid,哪个用户start的程序,这个程序的Uid就是那个用户,而Android中每个程序都有一个Uid,...

Android稳定性问题分析时获取手机状态的ADB命令

一,查询手机总共内存以及剩余内存 1.使用adbshell命令进入手机的shell模式 2.cat proc/meminfo 3.显示结果: -----------------------...

Android各国语言对照表

英文名(国家) 国家码 缩写 语言 阿拉伯 Arabic  SA values-ar   العربية 波斯语 Persian 无 values-fa   ...

Android手机中UID、PID作用及区别

PID 指进程ID. PID是进程的身份标识,程序一旦运行,就会给应用分配一个独一无二的PID(ps:一个应用可能包含多个进程,每个进程有唯一的一个PID) 进程终止后PID会被系统收回,再次打开...

android查看当前手机中的进程

正常情况下,每一个Android应用启动后都会对应一个进程,当前越来越多应用会有多个进程,为了推送,为了内存,或者为了保活。如何查看应用进程呢。1.DOS下面cmd,然后打开adb shell,直接p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)