版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31588719/article/details/79940505
最近在公司开发项目时候,由于后台给的是WebService接口,一般的请求框架都不能请求。如OkHttp,NoHttp,但是Retrofit可以,只是感觉有些麻烦,于是自己封装了一个简单的线程池,结合soap来完成接口请求这块。本以为自己的线程池封装的没有问题,结果用DDMS分析当前线程的时候,发现创建很多的现线程。。。咳咳,跑题了,主要是说下DDMS这个好用的调试工具分析线程时候的一些字段含义。。
打开DDMS,选择当前程序,有的同学会发现如图,选择了Thread会发现右边一片空白,并没有出现当前程序线程状态,只有一行英文。
那是因为你没勾选一个选项。看下图,依次点击左上角的Window------>Preference-------->Android-------->DDMS------>Thread updates enabled....把这个勾选上,保存后重新打开DDMS就可以看到了当前线程情况了.
1.ID:这个是虚拟机分配的唯一线程ID. 在 Dalvik, 该数字是一个从3开始的奇数。
2.Tid : Linux 线程 ID. 进程中主线程的ID, 会同进程的ID相匹配.
3.Status : 见名之意,这个是线程的状态,状态有好多种,其中守护进程会附带一个’*’.
状态信息列表如下:
- running – executing application code – 正在执行应用程序
- sleeping – called Thread.sleep() – 执行了Thread.sleep() 方法
- monitor – waiting to acquire a monitor lock – 在正等待获取一个监听锁
- wait – in Object.wait() – 在Object.wait() 方法中
- native – executing native code – 执行了原生代码
- vmwait – waiting on a VM resource – 正在等待一个虚拟机资源
- zombie – thread is in the process of dying – 该线程已死
- init – thread is initializing (you shouldn’t see this) – 线程正在初始化 (你不会看到这个)
- starting – thread is about to start (you shouldn’t see this either) – 线程正在启动中 (这个你也不会看
4.utime:执行用户代码的累计时间,单位是ms
5.stime : 执行系统代码的累计时间,单位是ms
6.Name : 线程的名字
结语,幸好分析了一下当前应用的线程状况,发现的创建的很多多余的线程,十分浪费资源,耗电,影响app的流畅。