<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之旅 廣告
                ***** **課后練習** [TOC=6] # 1. 知識點整理 什么是AsyncTask AsyncTask的優點 AsyncTask泛型參數的作用 AsyncTask使用方式 AsyncTask常用方法及其作用(哪些是必要,哪些是不必要) # 2. 技能練習 通過AsyncTask進行網絡異步請求。 # 3. 總結 ~~~ 1. 網絡的異步任務、AsyncTask、CallBack 2. 網絡的異步任務并更新UI實現方式: 本質來講,基本上都是通過Thread + Handler來實現 a. Thread + 自定義Handler方式:使用最廣泛,也是最靈活,自定義性最強。 Thread:負責執行耗時操作和通知UI更新(sendXXXMessageXXX發消息) Handler:更新UI(Handler的對象必須是創建在UI線程) b. Thread + Handler的post方法:使用比較簡單,Handler的對象也要創建在UI線程 post方法的參數是一個Runnable對象,在其run方法中實現更新的操作 c. Thread + Activity的runOnUiThread方法:使用也很簡單 runOnUiThread參數也是一個Runnable對象,在其run方法中實現更新操作 d. Thread + BroadcastReceiver方式: 在Thread里執行耗時操作,然后發廣播 在BroadcastReceiver中,收到廣播,然后更新UI。在onReceive方法中不能執行太多的操作 e. AsyncTask方式:簡單易用。 在doInBackGround里執行耗時操作 f. 其他方式:網絡上的一些開源框架,比如xUtils、afinal、volley。。。。 3. AsyncTask:基本使用,三個泛型參數<Path, Progress, Result> Path: 指定異步任務資源(通常是一個網絡地址字符串或者URL) 可變長度的參數, 傳入的位置是在execute(Path)方法中 接收的位置doInBackGround(Path)方法 Progress:可變長度的參數,表示進度值 傳入的位置在publishProgress(Progress) 接收的位置在onUpdateProgress(Progress) Result: 異步任務執行的結果 指定doInBackGround的返回值類型 指定onPostExecute的參數類型 幾個方法的意義: onPreExecute:在執行耗時操作之前調用,在其中需要執行一些初始化的工作 比如,初始化進度條對話框或者給一些變量賦初始值 doInBackGround:執行在子線程當中,主要在其中執行一些耗時操作。比如, 網絡任務上傳下載、訪問數據庫或者ContentProvider、復雜的運算等 如果需要實時的更新進度,需要在其中不斷的調用publishProgress來 通知onUpdateProgress更新進度。 onUpdateProgress:收到publishProgress的通知之后,進行進度更新 onPostExecute:主要接收doInBackGround的返回值,耗時操作的執行結果 可以在該方法中更新UI的顯示 使用的方式: a. 創建異步任務類的對象MyAsyncTask的對象task b. 調用execute方法來啟動異步任務task.execute(Path); 調用的基本順序: onPreExecute --> onDoInBackGround --> (onUpdateProgress) --> onPostExecute 4. CallBack回調接口的使用: 關鍵就是搞清楚回調方法:定義的位置、實現的位置、調用的位置 定義的位置:該內部接口中 實現的位置:在使用的地方,需要得到該接口對象的地方 調用的位置:內部接口所在的類當中 使用CallBack的好處:把接口方法的定義和調用給封裝起來,讓工具類的使用變得簡單易用。 用戶不需要關心接口方法的定義以及調用,只需要關注方法的具體實現功能即可。 ~~~
                  <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>

                              哎呀哎呀视频在线观看