说明:
pid指进程id。pid 是进程的身份标识,程序一旦运行,就会给应用分配一个独一无二的pid(ps:一个应用可能包含多个进程,每个进程只有唯一一个pid),进程终止后pid会被系统回收,再次打开应用,会重新分配一个pid(新进程的pid一般比之前的值要大)
查看命令 :adb shell ps

uid指用户的id。为了实现数据共享,android为每个应用几乎都分配了不同的uid,使之成了数据共享的工具。
查看命令 :命令:adb shell  cat  /proc/PID号/status

因此在android中pid、uid都是用来识别应用程序的身份的,但uid是为了不同的程序来使用共享的数据。

(1) process 相关的log
ActivityManager: START u0 {act=android.media.action.STILL_IMAGE_CAMERA flg=0x80000 cmp=com.htc.camera3/.CameraEntry (has extras)} from uid 10020 pid 26314 点击应用入口进入应用触发此log,新的activity还没有创建之前打印此log

act -- 表示被调用启动的activity的action,此处是activity com.htc.camera3/.CameraEntry的action
cmp -- 表示被调用启动的 activity,此处启动的activity 为com.htc.camera3/.CameraEntry
uid -- 表示发起调用的 uid
pid -- 表示发起调用的 pid,可以通过查询pid知道当前应用包名

Android规定android.system.uid=1000,具有该Uid的application,我们称之为获得Root权限

ActivityManager: Start proc 23009:com.htc.albumgp/u0a20 for activity com.htc.albumgp/com.htc.album.AlbumMain.ActivityMainTabHost 在新的activity创建前打印此log,生成新应用的pid

23009 -- 表示要启动的activity 的 pid
u0a20 -- pid 对应的UserID

ActivityManager: Start proc 23024:com.htc.pitroadCN/u0a77 for broadcast com.htc.pitroadCN/com.htc.pitroad.gametuning.receiver.GameTuningReceiver 23024 -- 表示要启动的broadcast receiver的 pid
u0a77 -- pid 对应的UserID
Start proc表示应用进程第一次启动
Start u0 表示启动已存在堆栈中的应用

ActivityManager: Start proc 23056:com.htc.mediamanager/u0a20 for service com.htc.albumgp/com.htc.mediamanager.providers.media.MMPService 23056 -- 表示要启动的service 的 pid
u0a20 -- pid 对应的UserID

ActivityManager: Killing 3434:com.google.android.partnersetup/u0a45 (adj 906): empty #17 3434 -- 表示kill掉的进程的pid
u0a45 -- 表示kill掉的进程的pid所在的userId
empty -- 表示kill的原因
adj 906 -- 906 不可见进程的adj最大值

系统是根据各个app四大组件的状态来决定进程的优先级值adj。系统会根据一定的策略先去回收优先级最低的(同时也是adj值最大的),其次再回收优先级略低的,依次类推,直到回收了足够的系统资源,保证系统正常运转。

Process : killProcessQuiet, pid=
被killed的pid

(2) activity 生命周期相关的log
Displayed com.android.settings/.Settings$NetworkDashboardActivity: +279ms (total +1s32ms) 说明已经走完onResume,activity显示出来了

第一个时间表示系统接受到打开的intent到HomeActivity界面显示出来的时间0.279秒。
 第二个时间特殊情况下才会有。例如这种调用流程:A->B(在onCreate立刻finish掉自己,直接跳转到C)->C(TestActivity),它包含了B页面onCreate处理以及finish的时间。
 这个时间如果过长,会导致用户点击跳转后,页面还停留在原来界面,延迟一段时间再跳转。这种体验很差,用户会觉得卡顿并容易点击多次。很多应用程序的入口页面,都设计成这种情况的跳转。

(3) service 相关的 log

ActivityManager: startService: Intent { cmp=com.android.phone/.NetworkQueryService } type=null args=null pid=2508 Start service打印此log

cmp -- 启动的service的名字
pid -- 发起调用service的包 com.android.phone所在的进程号

如果Service没有设定属性android:process=”:remote” 
Service会和Activity是在同一个进程中的,而且都是主线程 
如果Service设定属性android:process=”:remote” 
那么就会创建新进程,这时Activity可以通过跨进程访问Service中的数据

ActivityManager: stopService: Intent { cmp=com.android.settings/.framework.service.ChargerWarningService } type=null pid=2220 Stop service打印此log

cmp – 停止的service的名字
pid -- 发起调用service的包com.android.settings所在的进程号

(4) broadcast 相关的 log
ActivityManager: registerReceiver filter=f500a3b from com.android.phone,userId=0,pid=2508,uid=1001,rec=1e29c35

filter – filter的对象的值
pid -- broadcast所在的com.android.phone 的pid
uid -- broadcast所在的com.android.phone 的uid
rec -- 注册的对象的值

ActivityManager: broadcast act=android.media.VOLUME_CHANGED_ACTION flg=0x14000000 from pid=1744, uid=1000,parallel BR:a57ef64,u-1,size=3,replaced=0,order BR:null,size=0,resultTo=null 在调用sendBroadcast 时打印此log
act -- broadcast的过滤的名字
pid -- broadcast所在的pid
uid -- broadcast所在的uid
BR -- BroadcastRecord的对象的值
size -- registeredReceivers的个数

如果 resultTo == null, 则打印 BR:null,size=0,resultTo=null