android framework 查看 启动服务耗时
时间: 2023-09-29 09:09:21 浏览: 203
Android 优化之app启动优化的实现
在 Android Framework 中查看启动服务耗时,可以通过 adb shell dumpsys activity services 命令来获取。这个命令会输出所有正在运行的服务的信息,包括它们的启动时间和耗时。
例如,假设我们要查看系统中当前正在运行的所有服务的启动耗时,可以在终端中输入以下命令:
```
adb shell dumpsys activity services
```
输出结果中,每个服务的信息都会以如下形式显示:
```
SERVICE com.example.MyService
* ServiceRecord{123456 u0 com.example/.MyService}
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example/.MyService}
packageName=com.example
processName=com.example
baseDir=/data/app/com.example-1/base.apk
dataDir=/data/data/com.example
app=ProcessRecord{7890 u0 com.example:myprocess/xyz}
createTime=-2m28s824ms startingBgTimeout=--
lastActivity=-2m28s824ms restartTime=-2m28s824ms
createdFromFg=true
startRequested=true stopIfKilled=true callStart=true lastStartId=0
bindings.size=0
executingStart=-1
startId=-1
delayedStop=false stopWithTask=false lastStartForeground=false
noisy=false fgg=false explicitIdle=false comp=null
connection=null
delayed=true
delayedStop=false stopWithTask=false lastStartId=-1
destroyTime=-1
crashCount=0
restartDelay=0
restartCount=0
nextRestartTime=-1
proc=start
executeNesting=1
callingIdentity=System
whitelistManager=null
mBoundApplication=AppBindData{...}
mServiceInfo=ServiceInfo{...}
mPackageName=com.example
grantedUriPermissions=0
pendingStarts.size=0
lastPrincipalResuming=null
retainInstance=false
mStartCompatibility=0
mDispatchedStarts=[StartInfo{...}]
mDelayedStop=--
mDestroyed=false
mStopIfKilled=false
mStopWithTask=false
mStartRequested=true
mDelayed=true
mLastStartId=-1
mExecuteNesting=1
mAllowCancel=true
mResultTo=null
mService=null
mHasAutoCreateConnections=false
mCreateBytes=-1
mRestored=false
mDestroyedByApp=false
mIsForeground=false
mForegroundId=0
mForegroundNoti=null
mCrashCount=0
mRestartCount=0
```
其中,createTime 表示服务创建时间,lastActivity 表示最后一次活动时间,restartTime 表示服务重新启动时间,executeNesting 表示执行嵌套深度(如果超过 1,则表示服务正在执行其他操作,如绑定等),mCreateBytes 表示创建服务时使用的内存大小,mCrashCount 表示服务崩溃次数,mRestartCount 表示服务重启次数等。
注意,dumpsys activity services 命令会输出大量信息,如果要查找特定服务的启动时间,可以使用 grep 命令进行过滤。例如,要查看 com.example.MyService 的启动时间,可以使用以下命令:
```
adb shell dumpsys activity services | grep com.example.MyService
```
阅读全文