定位framework中的问题,常常发现很多东西都是应用错误调用导致,通过打印堆栈能一定程度上提高定位的速度,但是调用栈遇到异步消息过程就无法很好的跟踪了,这个下面两个函数和一个log语句就非常有用了,如下:
int pid = Binder.getCallingPid();
int uid = Binder.getCallingUid();
Log.e(TAG, "methed was called by process pid "+ pid);
打印出pid之后,在cmd中执行下面两个命令“
adb shell
ps
然后找找pid对应的是哪个进程就是哪个进程调用了
另外值得注意的是:需要考虑那些只存在一段时间的进程,这些进程可能创建后,做完某件事情之后就退出了,这个时候PS的话,可能就找不到这个进程了,这个时候可以实时抓取,揪出这个调用者。
转自:http://blog.sina.com.cn/s/blog_645b74b90101fvmf.html