- 06-11 12:20:43.123 1508 3353 I wm_task_created: [14,-1]
位于task的构造函数中,第一个值对应task id,第二个值对应task的的roottask id
com/android/server/wm/Task.java
private Task(ActivityTaskManagerService atmService, int _taskId, Intent _intent,
Intent _affinityIntent, String _affinity, String _rootAffinity,
ComponentName _realActivity, ComponentName _origActivity, boolean _rootWasReset,
boolean _autoRemoveRecents, boolean _askedCompatMode, int _userId, int _effectiveUid,
String _lastDescription, long lastTimeMoved, boolean neverRelinquishIdentity,
TaskDescription _lastTaskDescription, PersistedTaskSnapshotData _lastSnapshotData,
int taskAffiliation, int prevTaskId, int nextTaskId, int callingUid,
String callingPackage, @Nullable String callingFeatureId, int resizeMode,
boolean supportsPictureInPicture, boolean _realActivitySuspended,
boolean userSetupComplete, int minWidth, int minHeight, ActivityInfo info,
IVoiceInteractionSession _voiceSession, IVoiceInteractor _voiceInteractor,
boolean _createdByOrganizer, IBinder _launchCookie, boolean _deferTaskAppear,
boolean _removeWithTaskOrganizer) {
......
EventLogTags.writeWmTaskCreated(mTaskId, isRootTask() ? INVALID_TASK_ID : getRootTaskId());
}
- 06-11 12:20:43.126 1508 3353 I wm_task_moved: [14,1,2]
wm_task_moved (TaskId|1|5),(ToTop|1),(Index|1)
com/android/server/wm/Task.java
void updateTaskMovement(boolean toTop, int position) {
EventLogTags.writeWmTaskMoved(mTaskId, toTop ? 1 : 0, position);
final TaskDisplayArea taskDisplayArea = getDisplayArea();
if (taskDisplayArea != null && isLeafTask()) {
taskDisplayArea.onLeafTaskMoved(this, toTop);
}
if (isPersistable) {
mLastTimeMoved = System.currentTimeMillis();
}
}
- 06-11 12:20:43.126 1508 3353 I wm_task_to_front: [0,14]
表明task移动到TaskDisplayArea的顶部,第一个值:user id, 第二个值:task id
com/android/server/wm/TaskDisplayArea.java
void onLeafTaskMoved(Task t, boolean toTop) {
if (!toTop) {
if (t.mTaskId == mLastLeafTaskToFrontId) {
mLastLeafTaskToFrontId = INVALID_TASK_ID;
// If the previous front-most task is moved to the back, then notify of the new
// front-most task.
final ActivityRecord topMost = getTopMostActivity();
if (topMost != null) {
mAtmService.getTaskChangeNotificationController().notifyTaskMovedToFront(
topMost.getTask().getTaskInfo());
}
}
return;
}
if (t.mTaskId == mLastLeafTaskToFrontId || t.topRunningActivityLocked() == null) {
return;
}
mLastLeafTaskToFrontId = t.mTaskId;
EventLogTags.writeWmTaskToFront(t.mUserId, t.mTaskId);
// Notifying only when a leaf task moved to front. Or the listeners would be notified
// couple times from the leaf task all the way up to the root task.
mAtmService.getTaskChangeNotificationController().notifyTaskMovedToFront(t.getTaskInfo());
}
- 06-11 12:20:43.126 1508 3353 I wm_create_task: [0,14]
位于com/android/server/wm/ActivityStarter.startActivityInner() 在新的task create之后,第一个值:user id, 第二个值:task id
06-11 12:20:43.126 1508 3353 I wm_create_activity:
该打印不代表创建了ActivityRecord,ActivityRecord创建的比较早
wm_create_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Action|3),(MIME Type|3),(URI|3),(Flags|1|5)
com/android/server/wm/ActivityRecord.java
void logStartActivity(int tag, Task task) {
final Uri data = intent.getData();
final String strData = data != null ? data.toSafeString() : null;
EventLog.writeEvent(tag,
mUserId, System.identityHashCode(this), task.mTaskId,
shortComponentName, intent.getAction(),
intent.getType(), strData, intent.getFlags());
}
[0,232319598,14,org.chromium.webview_shell/.WebViewBrowserActivity,android.intent.action.MAIN,NULL,NULL,270532608]
- 06-11 12:20:43.126 1508 3353 I wm_task_moved: [14,1,2]
过 - 06-11 12:20:43.127 1508 3353 I wm_pause_activity: [0,182796840,com.android.launcher3/.uioverrides.QuickstepLauncher,userLeaving=true,pauseBackTasks]
wm_pause_activity (User|1|5),(Token|1|5),(Component Name|3),(User Leaving|3),(Reason|3)
06-11 12:20:43.129 1508 1560 I am_uid_running: 10077
06-11 12:20:43.130 2902 2902 I wm_on_top_resumed_lost_called: [182796840,com.android.launcher3.uioverrides.QuickstepLauncher,topStateChangedWhenResumed]
com/android/server/wm/TaskFragment.java
void schedulePauseActivity(ActivityRecord prev, boolean userLeaving,
boolean pauseImmediately, boolean autoEnteringPip, String reason) {
ProtoLog.v(WM_DEBUG_STATES, "Enqueueing pending pause: %s", prev);
try {
EventLogTags.writeWmPauseActivity(prev.mUserId, System.identityHashCode(prev),
prev.shortComponentName, "userLeaving=" + userLeaving, reason);
mAtmService.getLifecycleManager().scheduleTransaction(prev.app.getThread(),
prev.token, PauseActivityItem.obtain(prev.finishing, userLeaving,
prev.configChangeFlags, pauseImmediately, autoEnteringPip));
} catch (Exception e) {
// Ignore exception, if process died other code will cleanup.
Slog.w(TAG, "Exception thrown during pause", e);
mPausingActivity = null;
mLastPausedActivity = null;
mTaskSupervisor.mNoHistoryActivities.remove(prev);
}
}
06-11 12:20:43.134 2902 2902 I wm_on_paused_called: [182796840,com.android.launcher3.uioverrides.QuickstepLauncher,performPause]
android/app/Activity.java
final void performPause() {
if (Trace.isTagEnabled(Trace.TRACE_TAG_WINDOW_MANAGER)) {
Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "performPause:"
+ mComponent.getClassName());
}
dispatchActivityPrePaused();
mDoReportFullyDrawn = false;
mFragments.dispatchPause();
mCalled = false;
onPause();
EventLogTags.writeWmOnPausedCalled(mIdent, getComponentName().getClassName(),
"performPause");
mResumed = false;
if (!mCalled && getApplicationInfo().targetSdkVersion
>= android.os.Build.VERSION_CODES.GINGERBREAD) {
throw new SuperNotCalledException(
"Activity " + mComponent.toShortString() +
" did not call through to super.onPause()");
}
dispatchActivityPostPaused();
Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
}
- 06-11 12:20:43.135 1508 3353 I wm_add_to_stopping:
wm_add_to_stopping (User|1|5),(Token|1|5),(Component Name|3),(Reason|3)
com/android/server/wm/ActivityRecord.java
void addToStopping(boolean scheduleIdle, boolean idleDelayed, String reason) {
if (!mTaskSupervisor.mStoppingActivities.contains(this)) {
EventLogTags.writeWmAddToStopping(mUserId, System.identityHashCode(this),
shortComponentName, reason);
// 加入到 mStoppingActivities 列表中
mTaskSupervisor.mStoppingActivities.add(this);
}
....
}
[0,182796840,com.android.launcher3/.uioverrides.QuickstepLauncher,makeInvisible]
06-11 12:20:43.145 1508 1571 I am_proc_start: [0,20025,10077,org.chromium.webview_shell,next-top-activity,{org.chromium.webview_shell/org.chromium.webview_shell.WebViewBrowserActivity}]
`06-11 12:20:43.147 1508 1725 I input_focus: [Focus leaving 11f10e4 com.android.launcher3/com.android.launcher3.uioverrides.QuickstepLauncher (server),reason=NO_WINDOW]
焦点离开
native/services/inputflinger/dispatcher/InputDispatcher.cpp
void InputDispatcher::dispatchFocusLocked(nsecs_t currentTime, std::shared_ptr<FocusEntry> entry) {
std::shared_ptr<InputChannel> channel = getInputChannelLocked(entry->connectionToken);
if (channel == nullptr) {
return; // Window has gone away
}
InputTarget target;
target.inputChannel = channel;
target.flags = InputTarget::FLAG_DISPATCH_AS_IS;
entry->dispatchInProgress = true;
std::string message = std::string("Focus ") + (entry->hasFocus ? "entering " : "leaving ") +
channel->getName();
std::string reason = std::string("reason=").append(entry->reason);
android_log_event_list(LOGTAG_INPUT_FOCUS) << message << reason << LOG_ID_EVENTS;
dispatchEventLocked(currentTime, entry, {target});
}
- 06-11 12:20:43.156 1508 20005 I am_proc_bound: [0,20025,org.chromium.webview_shell]
am_proc_bound (User|1|5),(PID|1|5),(Process Name|3)
发生在 应用金车能够启动后 调用ams的attachApplicationLocked 阶段
com/android/server/am/ActivityManagerService.java
private boolean attachApplicationLocked(@NonNull IApplicationThread thread,
int pid, int callingUid, long startSeq) {
.....
EventLogTags.writeAmProcBound(app.userId, pid, app.processName);
......
}
-
06-11 12:20:43.158 1508 20005 I wm_restart_activity: [0,232319598,14,org.chromium.webview_shell/.WebViewBrowserActivity]
位于 com/android/server/wm/ActivityTaskSupervisor.java 中的 realStartActivityLocked 意味着真正 的要去client端去启动一个activity
wm_restart_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3) -
06-11 12:20:43.159 1508 20005 I wm_set_resumed_activity: [0,org.chromium.webview_shell/.WebViewBrowserActivity,minimalResumeActivityLocked - onActivityStateChanged]
wm_set_resumed_activity (User|1|5),(Component Name|3),(Reason|3)
发生在给clent端发送ResumeActivityItem之后并设置相应的ActivityRecord的状态为 RESUMED之后.
堆栈:
at com.android.server.wm.ActivityTaskManagerService.setLastResumedActivityUncheckLocked(ActivityTaskManagerService.java:4722)
at com.android.server.wm.ActivityTaskSupervisor.updateTopResumedActivityIfNeeded(ActivityTaskSupervisor.java:2129)
at com.android.server.wm.TaskFragment.setResumedActivity(TaskFragment.java:520)
at com.android.server.wm.TaskFragment.onActivityStateChanged(TaskFragment.java:816)
at com.android.server.wm.ActivityRecord.setState(ActivityRecord.java:5594)
at com.android.server.wm.Task.minimalResumeActivityLocked(Task.java:4760)
at com.android.server.wm.ActivityTaskSupervisor.realStartActivityLocked(ActivityTaskSupervisor.java:980)
at com.android.server.wm.RootWindowContainer$AttachApplicationHelper.test(RootWindowContainer.java:3612)
-
06-11 12:20:43.277 20025 20025 I wm_on_create_called:
[232319598,org.chromium.webview_shell.WebViewBrowserActivity,performCreate]
wm_on_create_called (Token|1|5),(Component Name|3),(Reason|3)
activity的onCreate被调用后调用 -
06-11 12:20:43.277 20025 20025 I wm_on_start_called: [232319598,org.chromium.webview_shell.WebViewBrowserActivity,handleStartActivity]
wm_on_start_called (Token|1|5),(Component Name|3),(Reason|3)
activity的onStart被调用后调用 -
06-11 12:20:43.278 20025 20025 I wm_on_resume_called: [232319598,org.chromium.webview_shell.WebViewBrowserActivity,RESUME_ACTIVITY]
wm_on_top_resumed_gained_called (Token|1|5),(Component Name|3),(Reason|3)
activity的onResume被调用后调用
06-11 12:20:43.284 20025 20025 I wm_on_top_resumed_gained_called: [232319598,org.chromium.webview_shell.WebViewBrowserActivity,topStateChangedWhenResumed] -
06-11 12:20:43.305 1508 1561 I input_focus: [Focus request 43cbf84 org.chromium.webview_shell/org.chromium.webview_shell.WebViewBrowserActivity,reason=UpdateInputWindows]
发生在wms计算出新的焦点窗口后把窗口焦点窗口信息发送给sf的时刻.
com/android/server/wm/InputMonitor.java
private void requestFocus(IBinder focusToken, String windowName) {
if (focusToken == mInputFocus) {
return;
}
mInputFocus = focusToken;
mInputTransaction.setFocusedWindow(mInputFocus, windowName, mDisplayId);
EventLog.writeEvent(LOGTAG_INPUT_FOCUS, "Focus request " + windowName,
"reason=UpdateInputWindows");
ProtoLog.v(WM_DEBUG_FOCUS_LIGHT, "Focus requested for window=%s", windowName);
}
06-11 12:20:43.366 1508 1557 I wm_activity_launch_time: [0,232319598,org.chromium.webview_shell/.WebViewBrowserActivity,244]
wm_activity_launch_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3)
- 06-11 12:20:43.371 1508 1725 I input_focus: [Focus entering 43cbf84 org.chromium.webview_shell/org.chromium.webview_shell.WebViewBrowserActivity (server),reason=Window became focusable. Previous reason: NOT_VISIBLE]
- 焦点进入
native/services/inputflinger/dispatcher/InputDispatcher.cpp
void InputDispatcher::dispatchFocusLocked(nsecs_t currentTime, std::shared_ptr<FocusEntry> entry) {
std::shared_ptr<InputChannel> channel = getInputChannelLocked(entry->connectionToken);
if (channel == nullptr) {
return; // Window has gone away
}
InputTarget target;
target.inputChannel = channel;
target.flags = InputTarget::FLAG_DISPATCH_AS_IS;
entry->dispatchInProgress = true;
std::string message = std::string("Focus ") + (entry->hasFocus ? "entering " : "leaving ") +
channel->getName();
std::string reason = std::string("reason=").append(entry->reason);
android_log_event_list(LOGTAG_INPUT_FOCUS) << message << reason << LOG_ID_EVENTS;
dispatchEventLocked(currentTime, entry, {target});
}
06-11 12:20:43.699 1508 1560 I wm_stop_activity: [0,182796840,com.android.launcher3/.uioverrides.QuickstepLauncher]
wm_stop_activity (User|1|5),(Token|1|5),(Component Name|3)
发生在向clent发送 StopActivityItem 之前
- 06-11 12:20:43.705 2902 2902 I wm_on_stop_called: [182796840,com.android.launcher3.uioverrides.QuickstepLauncher,STOP_ACTIVITY_ITEM]