1.理解Android 的多線程的基本概念
進程:運行中的應用程序稱為進程,擁有系統(tǒng)資源(cpu、內存)
線程:進程中的一段代碼,一個進程中可以有多段代碼。本身不擁有資源(共享所在進程的資源)
在java中,程序入口被自動創(chuàng)建為主線程,在主線程中可以創(chuàng)建多個子線程。
多線程: 在同一應用程序中有多個功能流同時執(zhí)行
2.掌握 Android 的主線程與子線程交互的常用方法
1、handler
2、Activity.runOnUIThread(Runnable)
3、View.Post(Runnable)
4、View.PostDelayed(Runnabe,long)
5、AsyncTask
3.理解 Handler 的異步消息機制的實現(xiàn)原理
Handler 工作流程基本包括 Handler、Looper、Message、MessageQueue 四個部分。但我們在日常開發(fā)中,經(jīng)常都只會用到 Handler 和 Message 兩個類。Message 負責消息的搭載,里面有個 target 用于標記消息,obj 用于存放內容,Handler 負責消息的分發(fā)和處理。
4.掌握 AsyncTask 類的各個方法的定義及作用
onPreExecute://在UI線程調用,在doInBackground之前執(zhí)行,顯示加載框、AsyncTask的準備工作
doInBackground://在后臺線程調用,執(zhí)行后臺任務的方法
onProgressUpdate://在UI線程調用,顯示操作進度
onPostExecute:////在UI線程調用,在doInBackground之后執(zhí)行 ,隱藏加載框、任務完成,通知主線程結果
5.掌握 Handler、AsyncTask 的開發(fā)流程
handler
- 首先new一個Handler對象
- 需要更新UI的子線程代碼處new一個Message對象與主線程通信
- 當Handler接收到Message之后,通過if語句判斷what值
- 執(zhí)行我們刷新UI的邏輯
AsyncTask
一個異步任務的執(zhí)行一般包括以下幾個步驟:
- execute,執(zhí)行一個異步任務,觸發(fā)異步任務的執(zhí)行。
- onPreExecute,在執(zhí)行后臺任務前對 UI做一些
標記。 - doInBackground,在 onPreExecute()完成后立即執(zhí)行,用于執(zhí)行較為費時的操作。
- onProgressUpdate在調用,此方法被執(zhí)行,直接將進度信息更新到UI組件上。
- onPostExecute,當后臺操作結束時,此方法將會被調用,計算結果將做為參數(shù)傳遞到此方法中,直接將結果顯示到 UI 組件上。
6.掌握 Http 協(xié)議的基本概念
請求由三部分組成,分別是:請求行、消息報頭、請求正文
HTTP(超文本傳輸協(xié)議)是一個基于請求與響應模式的、無狀態(tài)的、應用層的協(xié)議,?;赥CP的連接方式,
常用的HTTP方法
GET: 用于請求訪問已經(jīng)被URI(統(tǒng)一資源標識符)識別的資源,可以通過URL傳參給服務器。
POST:用于傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
7.掌握 HttpURLConnection 訪問網(wǎng)絡的開發(fā)流程
- 準備HttpURLConnection請求地址url。
- 準備請求數(shù)據(jù)并拼接到請示url上。
- 如果請求url中請求參數(shù)存在中文的情況,要先將url進行encode操作
- 創(chuàng)建連接:HttpURLConnection connection = (HttpURLConnection)realUrl.openConnection();
- 設置此時請求的requestHeader請求頭信息
- 進行請求連接:connection.connect();
- 創(chuàng)建一個讀取響應信息的一個輸入流類BufferedReader
8. 掌握 OkHttp、Voiley 或 Retrofit 等一種網(wǎng)絡通訊框架的使用方法
Retrofit網(wǎng)絡通訊框架
- 添加Retrofit庫的依賴
- 創(chuàng)建 接收服務器返回數(shù)據(jù) 的類
- 創(chuàng)建 用于描述網(wǎng)絡請求 的接口
- 創(chuàng)建 Retrofit 實例
- 創(chuàng)建 網(wǎng)絡請求接口實例 并 配置網(wǎng)絡請求參數(shù)
- 發(fā)送網(wǎng)絡請求(異步 / 同步),封裝了 數(shù)據(jù)轉換、線程切換的操作
- 處理服務器返回的數(shù)據(jù)