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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

线程间通讯

發布時間:2025/4/16 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程间通讯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決ANR問題:

子線程:進行耗時操作

? ? ? ? ? ? |

?Handle(將子線程耗時的結果,傳遞到主線程)

主線程:進行控件更新


Handle

實現步驟

1.獲得Hand對象

Handler?handler=new?Handler();

2.通過handler.sendMessage()將子線程中的數據傳遞到主線程更新

3.在HandleMessage()中獲得子線程耗時下載的結果 ,更新數據到控件

msg.what=2;//區分哪個子線程傳遞數據給主線程


//從消息池中獲取message對象 ?性能上優化

?Message?msg?=?handler.obtainMessage();

handler.sendEmptyMessage(what);//發送空消息

// handler.sendMessageDelayed(msg,?4000);//延遲一段時間后再發送消息

Message?message?=?handler.obtainMessage(1,?1,?2,?str);//封裝消息

handler.sendMessage(message);


簡單更新控件的方法

1.RunOnUIThread()

2.非空的View handle 都有?post();

3.非空的View handle 都有?postDelayed(action,time);延遲一段時間后在執行run()


練習:

progressBar自動更新進度 ? ?子線程中更新控件



AyncTask (異步任務)

優點:使用方便 要求低

缺點:步驟多

String...?params : 可變參數 ? 沒有使用的參數 Void表示

實現步驟:?

1.創建一個類繼承AsyncTask<String,?Void,?String> ?參數:泛型

第一個參數:決定了doInBackground()的傳入參數類型 ??

?下載網址??

第二個參數:決定publishProgress();onProgressUpdate ()傳入參數類型名

第三個參數:決定doInBackground()返回值類型

? ? ? ? ? ? ? ? ? ?onPostExecute的傳入參數類型 ?


2.重寫doInBackground//進行耗時操作 ??執行在子線程 ??返回耗時結果


3.重寫onPostExecute ?獲得耗時結果 ??進行控件更新 ? ?執行在主線程


4.推送中間進度 ?

5.重寫onProgressUpdate()接收中間進度

6.重寫onPreExecute()執行再doInbackground()之前

7.啟動異步任務


啟動異步任務流程

1.啟動異步任務


啟動異步任務下載圖片

注意:添加網絡權限

<uses-permission?android:name="android.permission.INTERNET"/>



轉載于:https://blog.51cto.com/1206995290qq/1830802

總結

以上是生活随笔為你收集整理的线程间通讯的全部內容,希望文章能夠幫你解決所遇到的問題。

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