<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                Looper和Handler會有什么同步關系呢?它們之間確實有同步關系,而且如果不注意此關系,定要鑄成大錯! 同步關系肯定和多線程有關,看下面的一個例子: **例子2** ~~~ /先定義一個LooperThread類 class LooperThread extends Thread { publicLooper myLooper = null;//定義一個public的成員myLooper,初值為空。 public void run() { //假設run在線程2中執行 Looper.prepare(); // myLooper必須在這個線程中賦值 myLooper = Looper.myLooper(); Looper.loop(); } } //下面這段代碼在線程1中執行,并且會創建線程2 { LooperThreadlpThread= new LooperThread; lpThread.start();//start后會創建線程2 Looper looper = lpThread.myLooper;//<======注意 // thread2Handler和線程2的Looper掛上鉤 Handler thread2Handler = new Handler(looper); //sendMessage發送的消息將由線程2處理 threadHandler.sendMessage(...) } ~~~ 上面這段代碼的目的很簡單: - 線程1中創建線程2,并且線程2通過Looper處理消息。 - 線程1中得到線程2的Looper,并且根據這個Looper創建一個Handler,這樣發送給該Handler的消息將由線程2處理。 但很可惜,上面的代碼是有問題的。如果我們熟悉多線程,就會發現標有“注意”的那行代碼存在著嚴重問題。myLooper的創建是在線程2中,而looper的賦值則在線程1,很有可能此時線程2的run函數還沒來得及給myLooper賦值,這樣線程1中的looper將取到myLooper的初值,也就是looper等于null。另外, ~~~ Handler thread2Handler = new Handler(looper) 不能替換成 Handler thread2Handler = new Handler(Looper.myLooper()) ~~~ 這是因為,myLooper返回的是調用線程的Looper,即Thread1的Looper,而不是我們想要的Thread2的Looper。 對這個問題,可以采用同步的方式進行處理。你是不是有點迫不及待地想完善這個例子了?其實Android早就替我們想好了,它提供了一個HandlerThread來解決這個問題。
                  <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>

                              哎呀哎呀视频在线观看