日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

线程间通讯

發(fā)布時(shí)間:2025/4/16 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程间通讯 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

解決ANR問題:

子線程:進(jìn)行耗時(shí)操作

? ? ? ? ? ? |

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

主線程:進(jìn)行控件更新


Handle

實(shí)現(xiàn)步驟

1.獲得Hand對(duì)象

Handler?handler=new?Handler();

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

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

msg.what=2;//區(qū)分哪個(gè)子線程傳遞數(shù)據(jù)給主線程


//從消息池中獲取message對(duì)象 ?性能上優(yōu)化

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

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

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

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

handler.sendMessage(message);


簡(jiǎn)單更新控件的方法

1.RunOnUIThread()

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

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


練習(xí):

progressBar自動(dòng)更新進(jìn)度 ? ?子線程中更新控件



AyncTask (異步任務(wù))

優(yōu)點(diǎn):使用方便 要求低

缺點(diǎn):步驟多

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

實(shí)現(xiàn)步驟:?

1.創(chuàng)建一個(gè)類繼承AsyncTask<String,?Void,?String> ?參數(shù):泛型

第一個(gè)參數(shù):決定了doInBackground()的傳入?yún)?shù)類型 ??

?下載網(wǎng)址??

第二個(gè)參數(shù):決定publishProgress();onProgressUpdate ()傳入?yún)?shù)類型名

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

? ? ? ? ? ? ? ? ? ?onPostExecute的傳入?yún)?shù)類型 ?


2.重寫doInBackground//進(jìn)行耗時(shí)操作 ??執(zhí)行在子線程 ??返回耗時(shí)結(jié)果


3.重寫onPostExecute ?獲得耗時(shí)結(jié)果 ??進(jìn)行控件更新 ? ?執(zhí)行在主線程


4.推送中間進(jìn)度 ?

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

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

7.啟動(dòng)異步任務(wù)


啟動(dòng)異步任務(wù)流程

1.啟動(dòng)異步任務(wù)


啟動(dòng)異步任務(wù)下載圖片

注意:添加網(wǎng)絡(luò)權(quán)限

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



轉(zhuǎn)載于:https://blog.51cto.com/1206995290qq/1830802

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。