<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                本節將以應用程序Activity 的MainActivity組件的啟動過程為例,來說明Android應用程序的根Activity組件的啟動過程,即Android應用程序的啟動過程。由于**根Activity組件代表了一個Android應用程序,因此,它一般是在一個新的進程中啟動起來的。** 在**Android系統中, 所有的Activity組件都保存在一個堆棧中**, 其中,后面啟動的Activity組件位于前面啟動的Activity組件的上面。用戶在執行一個操作時,通常需要與一系列相關的Activity組件進行交互,這些相關的Activity組件在系統的Activity堆校中用一個任務(Task )來描述。 ### Activity和Acitivity調用棧 #### 任務棧 #### 參考鏈接 * [Android群英傳讀書筆記-第八章Activity與Activity調用棧分析](http://www.hmoore.net/alex_wsc/heros/156875) * [Google官網文章任務和返回棧](https://developer.android.com/guide/components/tasks-and-back-stack.htm) * [對應譯文翻譯](http://www.hmoore.net/alex_wsc/android/433658) - [關于Android中任務棧的總結](http://www.hmoore.net/alex_wsc/android/433740) 以7.1 Activity組件的應用實例為例,由于ManActivity組件的android:process屬性被設置為“ `shy.luo.activity.mainprocess`”,因此,Activity管理服務ActivityManagerService在啟動MainActivity組件時,就會發現系統中并不存在一個名稱為“`shy.luo.activity.mainprocess`”的應用程序進程,這時候它就會先創建這個應用程序進程,然后再在里面將MainActivity組件啟動起來。MainActivity組件是由Launcher組件來啟動的,而Launcher組件又是通過Activity 管理服務ActivityManagerService來啟動MainActivity組件的。**由于MainActivity組件、Launcher組件和Activity ManagerService是分別運行在不同的進程中的,因此, MainActivity組件的啟動過程就涉及到了三個進程**。這三個進程是**通過Binder進程間通信機制來完成MainActivity組件的啟動過程的**。 >[info] **注意**: ActivityManagerService是一個系統關鍵服務, 它運行在系統進程System 中, 負責啟動和調度應用程序組件 **Launcher組件啟動MainActivity組件的過程如下所示**。 * ( 1 ) Launcher組件向ActivityManagerService發送一個啟動MainActivity組件的進程間通信請求。 * ( 2) ActivityManagerService首先將要啟動的MainActivity組件的信息保存下來,然后再向Launcher組件發送一個進入中止狀態的進程間通信請求。 * ( 3 ) Launcher組件進入到中止狀態之后,就會向ActivityManagerService發送一個已進入中止狀態的進程間通信請求,以便ActivityManagerService可以繼續執行啟動MainActivity組件的操作。 * ( 4) ActivityManagerService發現用來運行MainActivity組件的應用程序進程不存在,因此,它就會先啟動一個新的應用程序進程。 * ( 5)新的應用程序進程啟動完成之后,就會向ActivityManagerService發送一個啟動完成的進程間通信請求,以便ActivityManagerService可以繼續執行啟動MainActivity組件的操作。 * ( 6) ActivityManagerService將第2步保存下來的MainActivity組件的信息發送給第4步創建的應用程序進程,以便它可以將MainActivity組件啟動起來。 這個過程一共分為35個步驟 **Step 1: Launcher.startActivitySafely()** ~~~ 1 void startActivitySafely(Intent intent, Object tag) { 2 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 3 try { 4 startActivity(intent); 5 } catch (ActivityNotFoundException e) { 6 Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); 7 Log.e(TAG, "Unable to launch. tag=" + tag + " intent=" + intent, e); 8 } catch (SecurityException e) { 9 Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); 10 Log.e(TAG, "Launcher does not have the permission to launch " + intent + 11 ". Make sure to create a MAIN intent-filter for the corresponding activity " + 12 "or use the exported attribute for this activity. " 13 + "tag="+ tag + " intent=" + intent, e); 14 } 15 } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看