ActivityStack.resumeTopActivityLocked内で、Activityが1つも起動されていない場合、
ランチャーを起動するようになっています。
これにより、端末起動時にはまずランチャーが起動されることになります。
・ランチャー起動までのスタック
com.android.server.am.ActivityManagerService.startHomeActivityLocked()
com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityRecord)
com.android.server.am.ActivityManagerService.systemReady(Runnable)
ActivityManagerService.java
public void systemReady(final Runnable goingCallback) {
    mMainStack.resumeTopActivityLocked(null);
ActivityStack.java
final boolean resumeTopActivityLocked(ActivityRecord prev) {
    // Find the first activity that is not finishing.
    ActivityRecord next = topRunningActivityLocked(null);
    if (next == null) {
        // There are no more activities!  Let's just start up the
        // Launcher...
        if (mMainStack) {
            return mService.startHomeActivityLocked();  // ランチャー起動
        }
    }
systemReadyが呼ばれる契機は、Androidの起動シーケンスに関わる話題なので割愛。
以上です。