"I/ActivityManager: Displayed...activity...+850ms" 由什么组成?
What does "I/ActivityManager: Displayed...activity...+850ms" comprised of?
我正在努力改善我的应用 activity 的显示时间。
我正在使用 logcat 来跟踪我的 activity 显示时间。
这是 logcat 输出的示例:
I/ActivityManager( 1097): 显示 com.example.myapp/com.example.myapp.activity.TutorialActivity: +850ms (total +1s503ms)
有人能告诉我 activity 经理是如何得出显示 activity 所需时间的结论的吗?
这段时间发生了什么,这段时间考虑了什么?
"normal time" 和 "total time" 有什么区别?
我试图找到有关此事的材料但没有成功..
提前致谢!
这一行打印在com.android.server.am.ActivityRecord.reportLaunchTimeLocked
:
private void reportLaunchTimeLocked(final long curTime) {
final ActivityStack stack = task.stack;
final long thisTime = curTime - displayStartTime;
final long totalTime = stack.mLaunchStartTime != 0
? (curTime - stack.mLaunchStartTime) : thisTime;
if (ActivityManagerService.SHOW_ACTIVITY_START_TIME) {
Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, "launching", 0);
EventLog.writeEvent(EventLogTags.AM_ACTIVITY_LAUNCH_TIME,
userId, System.identityHashCode(this), shortComponentName,
thisTime, totalTime);
StringBuilder sb = service.mStringBuilder;
sb.setLength(0);
sb.append("Displayed ");
sb.append(shortComponentName);
sb.append(": ");
TimeUtils.formatDuration(thisTime, sb);
if (thisTime != totalTime) {
sb.append(" (total ");
TimeUtils.formatDuration(totalTime, sb);
sb.append(")");
}
Log.i(ActivityManagerService.TAG, sb.toString());
}
mStackSupervisor.reportActivityLaunchedLocked(false, this, thisTime, totalTime);
if (totalTime > 0) {
//service.mUsageStatsService.noteLaunchTime(realActivity, (int)totalTime);
}
displayStartTime = 0;
stack.mLaunchStartTime = 0;
}
"normal time"基本上就是Activity
即将上线到绘制Activity
内容视图之间的时间(包括绘图时间)。
"total time" 包括 "normal time" 并且还考虑了启动前 Activity
秒所花费的时间。
通常,"normal time" 等同于 "total time"。从源码可以看出
if (thisTime != totalTime) {
sb.append(" (total ");
TimeUtils.formatDuration(totalTime, sb);
sb.append(")");
}
只有当"total time"与"normal time"不同时才会打印"total time"。通常,如果Activity B 在Activity A 的onCreate
中启动,Activity B 的"normal time" 将不同于"total time"。
我正在努力改善我的应用 activity 的显示时间。
我正在使用 logcat 来跟踪我的 activity 显示时间。
这是 logcat 输出的示例:
I/ActivityManager( 1097): 显示 com.example.myapp/com.example.myapp.activity.TutorialActivity: +850ms (total +1s503ms)
有人能告诉我 activity 经理是如何得出显示 activity 所需时间的结论的吗?
这段时间发生了什么,这段时间考虑了什么?
"normal time" 和 "total time" 有什么区别?
我试图找到有关此事的材料但没有成功..
提前致谢!
这一行打印在com.android.server.am.ActivityRecord.reportLaunchTimeLocked
:
private void reportLaunchTimeLocked(final long curTime) {
final ActivityStack stack = task.stack;
final long thisTime = curTime - displayStartTime;
final long totalTime = stack.mLaunchStartTime != 0
? (curTime - stack.mLaunchStartTime) : thisTime;
if (ActivityManagerService.SHOW_ACTIVITY_START_TIME) {
Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, "launching", 0);
EventLog.writeEvent(EventLogTags.AM_ACTIVITY_LAUNCH_TIME,
userId, System.identityHashCode(this), shortComponentName,
thisTime, totalTime);
StringBuilder sb = service.mStringBuilder;
sb.setLength(0);
sb.append("Displayed ");
sb.append(shortComponentName);
sb.append(": ");
TimeUtils.formatDuration(thisTime, sb);
if (thisTime != totalTime) {
sb.append(" (total ");
TimeUtils.formatDuration(totalTime, sb);
sb.append(")");
}
Log.i(ActivityManagerService.TAG, sb.toString());
}
mStackSupervisor.reportActivityLaunchedLocked(false, this, thisTime, totalTime);
if (totalTime > 0) {
//service.mUsageStatsService.noteLaunchTime(realActivity, (int)totalTime);
}
displayStartTime = 0;
stack.mLaunchStartTime = 0;
}
"normal time"基本上就是Activity
即将上线到绘制Activity
内容视图之间的时间(包括绘图时间)。
"total time" 包括 "normal time" 并且还考虑了启动前 Activity
秒所花费的时间。
通常,"normal time" 等同于 "total time"。从源码可以看出
if (thisTime != totalTime) {
sb.append(" (total ");
TimeUtils.formatDuration(totalTime, sb);
sb.append(")");
}
只有当"total time"与"normal time"不同时才会打印"total time"。通常,如果Activity B 在Activity A 的onCreate
中启动,Activity B 的"normal time" 将不同于"total time"。