<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國際加速解決方案。 廣告
                ***** **第一周周考簡答題** [TOC=6] # 1、簡述Handler運行原理 Handler運行原理 異步通信準備 => 消息入隊 => 消息循環 => 消息處理 * 異步通信準備 假定是在主線程創建 Handler,則會直接在主線程中創建處理器對象 `Looper`、消息隊列對象 `MessageQueue` 和 Handler 對象。需要注意的是,`Looper` 和 `MessageQueue` 均是屬于其 **創建線程** 的。`Looper` 對象的創建一般通過 `Looper.prepareMainLooper()` 和 `Looper.prepare()` 兩個方法,而創建 `Looper` 對象的同時,將會自動創建 `MessageQueue`,創建好 `MessageQueue` 后,`Looper` 將自動進入消息循環。此時,`Handler` 自動綁定了主線程的 `Looper` 和 `MessageQueue`。 * 消息入隊 工作線程通過 `Handler` 發送消息 `Message` 到消息隊列 `MessageQueue` 中,消息內容一般是 UI 操作。發送消息一般都是通過 `Handler.sendMessage(Message msg)` 和 `Handler.post(Runnabe r)` 兩個方法來進行的。而入隊一般是通過 `MessageQueue.enqueueeMessage(Message msg,long when)` 來處理。 * 消息循環 主要分為「消息出隊」和「消息分發」兩個步驟,`Looper` 會通過循環 **取出** 消息隊列 `MessageQueue` 里面的消息 `Message`,并 **分發** 到創建該消息的處理者 `Handler`。如果消息循環過程中,消息隊列 `MessageQueue` 為空隊列的話,則線程阻塞。 * 消息處理 `Handler` 接收到 `Looper` 發來的消息,開始進行處理。 # 2、簡述Mvc和Mvp的特點及區別 MVC MVC是Model(模型層)、View(視圖層)、Controller的組成的一種android開發框架,用一種業務邏輯、數據、界面分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性格定制界面和用戶交互的同時,不需要修改業務邏輯的代碼。 Model(模型) 是應用程序中處理應用程序數據邏輯的部分,一般用來存儲數據 View(視圖) 是應用程序中的用戶可視界面,也就是用來展示Model層的數據,通常是根據Model的數據來創建 Controller(控制器) 是應用程序中處理用戶交互的部分。通常是從View層讀取操作信息,Controller在經過一系列的邏輯處理后,改變Model的數據狀態,然后Model層將改變之后的數據展示到View層中,Contrller層本身不需要輸出任何東西,和做什么處理,只需要接收請求,決定用哪個模型處理請求,和哪個視圖返回數據。 ? MVC有助于管理復雜的應用程序,可以讓開發人員單獨進行某一層的開發。 優點: 1.耦合性低 視圖層和業務層分離,這樣就允許改變視圖,不用重新編譯模型和控制器的代碼,同樣當業務流程和業務需求改變也只需要改變模型層,應為M、V、C的分離所以很容易改變應用程序的數據層和業務規則。 2.重用性高 允許不同樣式的視圖共享一個模型 3.生命周期成本低 是開發和維護用戶接口的技術含量降低 4.部署快 他可以讓一個開發人員專注于業務邏輯的開發,而另一個開發人員專注于界面的開發。 5.維護性高 因為M、V、C層的分離所以更易于維護和修改 ? 缺點: 1.不適合小型和中型規模的應用程序 2.視圖和控制器之間過于緊密的連接 視圖和控制器是相互分離的,但是他們的聯系特別緊密,也就是視圖不能失去控制器,控制器也不能失去視圖。 ? MVP mvp全稱Model、view、presenter,MVP是從經典的模式MVC演變而來,他們基本思想有想通的地方,MVC的controller層就相當于MVP的presenter層,負責邏輯的處理,Model用來提供數據,View負責顯示。 ? 特點: MVP和MVC最大的區別就是:在MVP中View并不會直接使用Model,他們的之間的所有通信都是通過Presenter層進行,所有的交互都發生的presenter內部,在MVC中View會直接從Model中讀取數據而不是通過Controller. 在MVC里,View是可以直接訪問Model的,從而View里會包含Model信息,不可避免的還要包括一些業務邏輯。導致更改View也是比較困難的。 ? 優點: 1、模型與視圖完全分離,我們可以修改視圖而不影響模型 2、可以更高效地使用模型,因為所有的交互都發生在一個地方——Presenter內部 3、我們可以將一個Presenter用于多個視圖,而不需要改變Presenter的邏輯。這個特性非常的有用,因為視圖的變化總是比模型的變化頻繁。 4、如果我們把邏輯放在Presenter中,那么我們就可以脫離用戶接口來測試這些邏輯(單元測試) ? 缺點: 由于對視圖的渲染放在了Presenter中,所以視圖和Presenter的交互會過于頻繁。還有一點需要明白,如果Presenter過多地渲染了視圖,往往會使得它與特定的視圖的聯系過于緊密。一旦視圖需要變更,那么Presenter也需要變更了。比如說,原本用來呈現Html的Presenter現在也需要用于呈現Pdf了,那么視圖很有可能也需要變更。 # 3、簡述基類抽取有什么好處(比如在資訊學過的抽取BaseActivity、BaseFragment基類) 1.簡化了程序,使得程序的累贅部分減少,使程序簡潔。 2.易于派生出其他類。 3.提高代碼通用性。 # 4、git與svn的區別 1.svn是集中式的版本管理工具 git是分布式的版本管理工具。 2.git是每個歷史版本都存儲完整的文件,便于恢復,svn是存儲差異文件,歷史版本不可恢復。(核心) 3.git可離線完成大部分操作,svn則不能。 4.git有著更優雅的分支和合并實現。 5.git有著更強的撤銷修改和修改歷史版本的能力 6.git速度更快,效率更高。 # 5、簡述從0-1項目開發流程 項目立項 =》需求文檔 =》產品原型 =》制定開發計劃 =》 開發人員開發 =》嚴密測試 =》打包上線
                  <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>

                              哎呀哎呀视频在线观看