Android 应用冷启动event log

  • 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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值