android入門教程如何利用Handler更新android的UI

android入門教程如何利用Handler更新android的UI

ID:40711951

大?。?5.00 KB

頁數(shù):7頁

時(shí)間:2019-08-06

android入門教程如何利用Handler更新android的UI_第1頁
android入門教程如何利用Handler更新android的UI_第2頁
android入門教程如何利用Handler更新android的UI_第3頁
android入門教程如何利用Handler更新android的UI_第4頁
android入門教程如何利用Handler更新android的UI_第5頁
資源描述:

《android入門教程如何利用Handler更新android的UI》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、android入門教程如何利用Handler更新android的UI新手剛開始接觸Android線程編程的時(shí)候,會(huì)想到如下使用如下代碼:Java代碼1newThread(newRunnable(){2publicvoidrun(){3myView.invalidate();4}5}).start();但是:該實(shí)現(xiàn)方法是不可行的。分析問題:因?yàn)椋篈ndroidUI操作并不是線程安全的,這些操作必須在UI線程中執(zhí)行。1.myView.invalidate()是UI操作;2.newThread創(chuàng)建了一個(gè)新的線程,是一個(gè)子線程

2、,而不是UI線程,在這個(gè)新的線程里面對(duì)view進(jìn)行刷新,這樣是不安全的。解決問題:那么如何解決這個(gè)問題呢?答案:使用Handler來實(shí)現(xiàn)UI線程的更新的。實(shí)現(xiàn)步驟:1.在view類里面定義一個(gè)Handler變量,這并沒有開啟一個(gè)新的線程,因此在handler里面更新本view是安全的;2.然后我們創(chuàng)建一個(gè)線程,通過這個(gè)線程來給activity的handler變量發(fā)送消息,同時(shí)通過這個(gè)線程進(jìn)行延時(shí)。意即:1.Handler接收消息和處理消息;2.創(chuàng)建一個(gè)線程,來給Handler發(fā)送消息;消息處理三部曲:1.發(fā)送消息;2.

3、接收消息;3.處理消息;代碼參考首先創(chuàng)建簡單的View,代碼如下:Java代碼1packagecom.ray.handler;2importandroid.content.Context;3importandroid.graphics.Canvas;4importandroid.graphics.Color;5importandroid.graphics.Paint;6importandroid.graphics.Point;1importandroid.graphics.drawable.Drawable;2impo

4、rtandroid.view.View;34publicclassBounceViewextendsView{56floatx=40;7publicBounceView(Contextcontext){8super(context);9}1011@Override12protectedvoidonDraw(Canvascanvas){13x+=10;14PaintmPaint=newPaint();15mPaint.setAntiAlias(true);16mPaint.setColor(Color.GREEN);17

5、canvas.drawCircle(x,40,40,mPaint);18}19}20創(chuàng)建Activity類,代碼如下:1Java代碼packagecom.ray.handler;2importandroid.app.Activity;3importandroid.content.Context;4importandroid.graphics.Canvas;5importandroid.graphics.Color;6importandroid.graphics.Paint;7importandroid.os.Bundl

6、e;8importandroid.os.Handler;9importandroid.os.Message;10importandroid.view.View;11importandroid.view.Window;1213publicclassTestHandlerextendsActivity{14protectedstaticfinalintGUIUPDATEIDENTIFIER=0x101;1516ThreadmyRefreshThread=null;17BounceViewmyBounceView=null;

7、1819HandlermyHandler=newHandler(){//在主線程中創(chuàng)建Handler對(duì)象20publicvoidhandleMessage(Messagemsg){//處理消息21switch(msg.what){1caseTestHandler.GUIUPDATEIDENTIFIER://2myBounceView.invalidate();//UI界面更新3break;4}5super.handleMessage(msg);6}7};8910publicvoidonCreate(Bundlesave

8、dInstanceState){1112super.onCreate(savedInstanceState);13this.requestWindowFeature(Window.FEATURE_NO_TITLE);14this.myBounceView=newBounceView(this);15this.setContentV

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。