學習Android開發有哪些技巧呢
發布者:網上發布
??在Android中,線程分為主線程和子線程。主界面用于與用戶交互,進行UI的相關操作,而子線程則負責耗時操作。如果在主線程中進行耗時操作,就會使程序無法及時的響應。因此,耗時操作必須放在子線程中進行。為了方便你快速清晰地了解線程與安卓開發,本文將從以下幾個方面為你闡述
??1 主線程和子線程
??主線程是指進程所有用的線程,在Android中即指進行UI與用戶交互的線程就是主線程。因此在Android開發中,需要盡可能的把耗時操作,網絡請求訪問操作,數據庫讀取操作等放在子線程,以避免主線程長期處于占用狀態以降低用戶體驗。系統要求網絡訪問必須在子線程中進行,否則會拋出NetworkOnMainThreadException異常。
??2 線程形態
??Android中的線程形態有傳統的Thread,AsyncTask,HandlerThread和IntentService。
??AsyncTask封裝了Thread和Handler,必須在主線程進行調用,它可以在子線程中執行任務,然后將執行的結果傳遞給主線程并更新UI。但AsyncTask并不適合執行特別耗時的任務。
??AsyncTask是一個泛型類,提供了三個泛型參數:Params,Progress和Result。
??Params表示參數的類型
??Progress表示后臺任務的執行進度的類型
??Result表示后臺任務返回結果的類型
??AsyncTask的聲明:
??2.1.2 方法:
??AsyncTask提供了一些核心方法:
??onPreExecute在主線程中調用用來進行異步任務的準備操作。
??doInBackground(Params……params)在執行完onPreExecute后進行子線程任務時自動調用,Params表示異步任務的輸入參數。在方法中可以通過publishProgress更新任務的完成進度,同時在結束調用后會返回結果給onPostExecute方法。
??onProgressUpdate(Params……params)在主線程中用于顯示任務進行的進度,在publishProgress方法中被調用。
??onProgressExecute(Result result)在主線程中用戶獲取任務結束后回返的結果,即doInBackground的返回值。
??onCancelled在主線程中執行,當異步任務被取消后不會執行onProgressExecute方法而會執行onCancelled方法。