前言
在android開(kāi)發(fā)中,界面UI的更新都是在主線(xiàn)程來(lái)完成的。線(xiàn)程分為主線(xiàn)程(Main Thread,簡(jiǎn)稱(chēng)MT)和工作線(xiàn)程(Work Thread,簡(jiǎn)稱(chēng)WT),我們通常會(huì)在WT中執(zhí)行一些比較耗時(shí)的操作,比如下載,網(wǎng)絡(luò),緩存等,然后在將結(jié)果發(fā)送給MT進(jìn)行UI的更新操作。如果是在WT進(jìn)行UI的更新,則會(huì)拋出異常,android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.(只有創(chuàng)建這個(gè)View的原始線(xiàn)程才能修改這個(gè)view)。
在BT搜索、WIFI搜索、其他需要更新View的UI過(guò)程中,很多是采用廣播的方式通知搜索的結(jié)果,實(shí)時(shí)的顯示到listview中進(jìn)行UI的更新操作。通常會(huì)使用以下幾種方式進(jìn)行UI的更新:handler,runOnUiThread,子線(xiàn)程發(fā)送Message。
一、Activity.runOnUiThread
利用Activity.runOnUiThread(Runnable)把更新ui的代碼創(chuàng)建在Runnable中,然后在需要更新 ui時(shí),把這個(gè)Runnable對(duì)象傳給Activity.runOnUiThread(Runnable)。這樣Runnable對(duì)像就能在ui程序中被調(diào)用。如果當(dāng)前線(xiàn)程是UI線(xiàn)程,那么行動(dòng)是立即執(zhí)行。如果當(dāng)前線(xiàn)程不是UI線(xiàn)程,操作是發(fā)布到事件隊(duì)列的UI線(xiàn)程。
mActivity.runOnUiThread(new Runnable() { @Override public void run() { Log.e(TAG, "開(kāi)始添加設(shè)備!"); addDevice(device); } });
網(wǎng)站名稱(chēng):詳解AndroidUI更新的幾種方法-創(chuàng)新互聯(lián)
路徑分享:http://www.chinadenli.net/article22/djsijc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管、響應(yīng)式網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)