日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 中的线程及 AsyncTask(线程形态之一)解析一下

發布時間:2024/9/30 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 中的线程及 AsyncTask(线程形态之一)解析一下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

科普一下 線程是操作系統調度的最小單元.

線程在android中是一個很重要的概念.
主線程 也叫 UI 線程 作用: 運行四大組件以及處理他們和用戶交互.
子線程 作用; 執行耗時任務. 比如 I/O 操作, 網絡請求.

android 3.0 開始,網絡訪問必須放在子線程中.

線程形態: 1傳統的Thread, 2 AsyncTask ,3 HandlerThread ,4 IntentService
2,3,4 這個三者底層實現也是線程,各有各自的優缺點.

下面解析一下

AsyncTask

一種 輕量級的異步任務類,可以在線程池中執行后臺任務 . 然后把執行的進度條和最終結果傳遞給主線程 并在主線程中更新UI.

注意:AsyncTask 不適合特別耗時的后臺任務. 可以使用線程池來解決.

4個核心方法

此外還有一個方法

步驟 : onPreExecute 先執行, 接著是 doInBackground ,最后是 onPostExecute , 除了這個四個方法之外 , 當異步任務取消的時候會執行 onCancelled()方法. 這個時候 onPostExecute 不會調用了

AsyncTask 使用限制
1 ,AsyncTask的類必須在主線程中加載. (5.0源碼中可見)
2.execute 方法必須在UI線程調用.
3.一個AsyncTask 對象只能執行一次. 否則報運行時異常錯誤
4.AsyncTask的對象必須在主線程中創建.

源碼解析

在多說一點 :

AsyncTask中有兩個線程池,(SerialExecutor 和 THREAD_POOL_EXECUTOR ) 和 一個Handler(InternalHandler ) ,
其中,
線程池SerialExecutor 用于任務的排隊,
THREAD_POOL_EXECUTOR 用于真正的執行任務,
InternalHandler 用于將執行環境從線程池中切換到主線程.

好的今天 就分享這么多啦. 下次有時間 和大家分享一下 線程池的 故事..

總結

以上是生活随笔為你收集整理的Android 中的线程及 AsyncTask(线程形态之一)解析一下的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。