<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國際加速解決方案。 廣告
                ### 9.1 四大組件的運行狀態 Android的四大組件中除了BroadcastReceiver以外,其他三種組件都必須在Android-Manifest中注冊,對于BroadcastReceiver來說,它既可以在AndroidManifest中注冊也可以通過代碼來注冊。在調用方式上,Activity、Service和BroadcastReceiver需要借助Intent,而ContentProvider則無須借助Intent。 Activity是一種展示型組件,用于向用戶直接地展示一個界面,并且可以接收用戶的輸入信息從而進行交互。Activity是最重要的一種組件,對用戶來說,Activity就是一個Android應用的全部,這是因為其他三大組件對用戶來說都是不可感知的。Activity的啟動由Intent觸發,其中Intent可以分為顯式Intent和隱式Intent,顯式Intent可以明確地指向一個Activity組件,隱式Intent則指向一個或多個目標Activity組件,當然也可能沒有任何一個Activity組件可以處理這個隱式Intent。一個Activity組件可以具有特定的啟動模式。關于Activity的啟動模式在第1章中已經做了介紹,同一個Activity組件在不同的啟動模式下會有不同的效果。Activity組件是可以停止的,在實際開發中可以通過Activity的finish方法來結束一個Activity組件的運行。由此來看,Activity組件的主要作用是展示一個界面并和用戶交互,它扮演的是一種前臺界面的角色。 Service是一種計算型組件,用于在后臺執行一系列計算任務。由于Service組件工作在后臺,因此用戶無法直接感知到它的存在。Service組件和Activity組件略有不同,Activity組件只有一種運行模式,即Activity處于啟動狀態,但是Service組件卻有兩種狀態:啟動狀態和綁定狀態。當Service組件處于啟動狀態時,這個時候Service內部可以做一些后臺計算,并且不需要和外界有直接的交互。盡管Service組件是用于執行后臺計算的,但是它本身是運行在主線程中的,因此耗時的后臺計算仍然需要在單獨的線程中去完成。當Service組件處于綁定狀態時,這個時候Service內部同樣可以進行后臺計算,但是處于這種狀態時外界可以很方便地和Service組件進行通信。Service組件也是可以停止的,停止一個Service組件稍顯復雜,需要靈活采用stopService和unBindService這兩個方法才能完全停止一個Service組件。 BroadcastReceiver是一種消息型組件,用于在不同的組件乃至不同的應用之間傳遞消息。BroadcastReceiver同樣無法被用戶直接感知,因為它工作在系統內部。BroadcastReceiver也叫廣播,廣播的注冊有兩種方式:靜態注冊和動態注冊。靜態注冊是指在AndroidManifest中注冊廣播,這種廣播在應用安裝時會被系統解析,此種形式的廣播不需要應用啟動就可以收到相應的廣播。動態注冊廣播需要通過Context.registerReceiver()來實現,并且在不需要的時候要通過Context.unRegisterReceiver()來解除廣播,此種形態的廣播必須要應用啟動才能注冊并接收廣播,因為應用不啟動就無法注冊廣播,無法注冊廣播就無法收到相應的廣播。在實際開發中通過Context的一系列send方法來發送廣播,被發送的廣播會被系統發送給感興趣的廣播接收者,發送和接收過程的匹配是通過廣播接收者的<intent-filter>來描述的。可以發現,BroadcastReceiver組件可以用來實現低耦合的觀察者模式,觀察者和被觀察者之間可以沒有任何耦合。由于BroadcastReceiver的特性,它不適合用來執行耗時操作。BroadcastReceiver組件一般來說不需要停止,它也沒有停止的概念。 ContentProvider是一種數據共享型組件,用于向其他組件乃至其他應用共享數據。和BroadcastReceiver一樣,ContentProvider同樣無法被用戶直接感知。對于一個ContentProvider組件來說,它的內部需要實現增刪改查這四種操作,在它的內部維持著一份數據集合,這個數據集合既可以通過數據庫來實現,也可以采用其他任何類型來實現,比如List和Map, ContentProvider對數據集合的具體實現并沒有任何要求。需要注意的是,ContentProvider內部的insert、delete、update和query方法需要處理好線程同步,因為這幾個方法是在Binder線程池中被調用的,另外ContentProvider組件也不需要手動停止。
                  <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>

                              哎呀哎呀视频在线观看