1.接手的项目apk中基于JT808协议用Socket上传位置等消息,用命令top -m 10 -s cpu
查看cpu消耗时发现此app占用cpu超过10%
先把GPS停了,重新运行还是会很耗cpu
2.定位
用Android Profiler查了下点record
最终定位到
线程里SocketChannel里的read方法
while (true) {
try {
int len = 0;
len = channel.read(readbuffer);
//Log.i(TAG, "channel.read len == " + len);
if ( len > 0 && handler != null) {
发现是死循环里不断read
于是在read读不到也就是返回-1里,做了短暂延时,问题解决.