*****
**課后練習**
[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的好處:把接口方法的定義和調用給封裝起來,讓工具類的使用變得簡單易用。
用戶不需要關心接口方法的定義以及調用,只需要關注方法的具體實現功能即可。
~~~
- 咨詢項目實戰
- 第一單元 HTTP協議
- 1.1 OSI七層模型
- 1.2 HTTP協議(重點)
- 1.3 HTTPS協議(了解)
- 1.4 TCP/IP協議擴展
- 1.5 WebService簡介及實戰(無接口)
- 1.6 課后練習
- 第二單元 HTTPURLConnection
- 2.1 ANR
- 2.2 網絡判斷
- 2.3 HTTPURLConnection
- 2.4 課后練習
- 第三單元 AsyncTask
- 3.1 AsyncTask概述
- 3.2 AsyncTask基本使用
- 3.3 課后練習
- 第四單元 圖片異步加載
- 4.1 圖片異步加載概述
- 4.2 LruCache
- 4.3 DiskLRUCache
- 4.4 圖片三級緩存概述
- 4.5 封裝圖片加載緩存框架
- 第五單元 ListView多條目
- 5.1 ListView多條目概述
- 5.2 ListView多條目的使用
- 第六單元 ListView實現下拉刷新上拉加載
- 6.1 下拉刷新和上拉加載更多
- 6.2 XListView概述
- 6.3 XListView的使用
- 第七單元 封裝網絡框
- 7.1 封裝網絡框架概述
- 7.2 網絡框架的封裝
- 第八單元 項目介紹
- 8.1 公司項目團隊架構簡介
- 8.2 項目文檔及項目流程介紹
- 8.3 項目管理
- 8.4 項目開發
- 第九單元 項目框架搭建
- 9.1 基類封裝概述
- 9.2 Application中初始化配置
- 9.3 項目中的工具類
- 9.4 封裝網絡請求框架
- 9.5 封裝圖片異步緩存框架
- 第十單元 搭建UI框架1
- 10.1 側滑菜單概述
- 10.2 主界面框架搭建
- 第十一單元 搭建UI框架2
- 11.1 TabLayout的概述
- 11.2 TabLayout的使用
- 第十二單元 圖片上傳
- 12.1 圖片上傳概述
- 12.2 圖片上傳的實現
- 第十三單元 PullToRefresh
- 13.1 PullToRefresh概述
- 13.2 PullToRefresh的使用
- 13.3 緩存業務實現思路
- 第十四單元 事件分發及滑動沖突
- 14.1 事件分發概述
- 14.2 事件分發流程
- 14.3 事件分發的使用
- 第十五單元 傳感器的基本使用
- 15.1 傳感器概述
- 15.2 傳感器的使用
- 第十六單元 HTML與CSS復習
- 16.1 HTML
- 16.2 CSS
- 第十七單元 js復習
- 17.1 js基礎語法
- 17.2 js數組和內置對象
- 17.3 js常用事件
- 17.4 js對象模型
- 17.5 js 正則表達式
- 第十八單元 WebView
- 18.1 WebView 概述
- 18.2 WebView的使用
- 18.3 WebView與js交互
- 第十九單元 項目案例
- 項目概述
- 第二十單元 項目答辯
- 周考
- 第一周周考
- 第二周周考
- 第三種周考
- 月考
- 接口文檔