最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android開(kāi)發(fā)教程之子線程中更新界面

 更新時(shí)間:2014年01月23日 15:55:14   作者:  
本文主要介紹Android的Handler的使用方法。Handler可以發(fā)送Messsage和Runnable對(duì)象到與其相關(guān)聯(lián)的線程的消息隊(duì)列

每個(gè)Handler對(duì)象與創(chuàng)建它的線程相關(guān)聯(lián),并且每個(gè)Handler對(duì)象只能與一個(gè)線程相關(guān)聯(lián)。
Handler一般有兩種用途:1)執(zhí)行計(jì)劃任務(wù),你可以再預(yù)定的實(shí)現(xiàn)執(zhí)行某些任務(wù),可以模擬定時(shí)器。2)線程間通信。在Android的應(yīng)用啟動(dòng)時(shí),會(huì)創(chuàng)建一個(gè)主線程,主線程會(huì)創(chuàng)建一個(gè)消息隊(duì)列來(lái)處理各種消息。當(dāng)你創(chuàng)建子線程時(shí),你可以再你的子線程中拿到父線程中創(chuàng)建的Handler對(duì)象,就可以通過(guò)該對(duì)象向父線程的消息隊(duì)列發(fā)送消息了。由于Android要求在UI線程中更新界面,因此,可以通過(guò)該方法在其它線程中更新界面。

通過(guò)Runnable在子線程中更新界面的例子

在onCreate中創(chuàng)建Handler

復(fù)制代碼 代碼如下:

public class HandlerTestApp extends Activity {
Handler mHandler;
TextView mText;
/** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   mHandler = new Handler();//創(chuàng)建Handler
   mText = (TextView) findViewById(R.id.text0);//一個(gè)TextView
   }

構(gòu)建Runnable對(duì)象,在runnable中更新界面,此處,我們修改了TextView的文字.此處需要說(shuō)明的是,Runnable對(duì)象可以再主線程中創(chuàng)建,也可以再子線程中創(chuàng)建。我們此處是在子線程中創(chuàng)建的。
復(fù)制代碼 代碼如下:

RunnablemRunnable0=newRunnable()
{
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
mText.setText("ThisisUpdatefromohterthread,MouseDOWN");
}
};

創(chuàng)建子線程,在線程的run函數(shù)中,我們向主線程的消息隊(duì)列發(fā)送了一個(gè)runnable來(lái)更新界面。

復(fù)制代碼 代碼如下:

privatevoidupdateUIByRunnable(){
newThread()
{
//Messagemsg=mHandler.obtainMessage();
publicvoidrun()
{
//mText.setText("ThisisUpdatefromohterthread,MouseDOWN");//這句將拋出異常
mHandler.post(mRunnable0);
}
}.start();
}

用Message在子線程中來(lái)更新界面
用Message更新界面與Runnable更新界面類似,只是需要修改幾個(gè)地方。
實(shí)現(xiàn)自己的Handler,對(duì)消息進(jìn)行處理

復(fù)制代碼 代碼如下:

privateclassMyHandlerextendsHandler
{
@Override
publicvoidhandleMessage(Messagemsg){
//TODOAuto-generatedmethodstub
super.handleMessage(msg);
switch(msg.what)
{
caseUPDATE://在收到消息時(shí),對(duì)界面進(jìn)行更新
mText.setText("Thisupdatebymessage");
break;
}
}
}

在新的線程中發(fā)送消息

復(fù)制代碼 代碼如下:

privatevoidupdateByMessage()
{
//匿名對(duì)象
newThread()
{
publicvoidrun()
{
//mText.setText("ThisisUpdatefromohterthread,MouseDOWN");
//UPDATE是一個(gè)自己定義的整數(shù),代表了消息ID
Messagemsg=mHandler.obtainMessage(UPDATE);
mHandler.sendMessage(msg);
}
}.start();
}

相關(guān)文章

最新評(píng)論

泽普县| 吉林省| 石狮市| 平度市| 邵东县| 北宁市| 淳化县| 会东县| 和顺县| 湘阴县| 墨江| 贵定县| 台州市| 阿瓦提县| 洛扎县| 兖州市| 行唐县| 福清市| 思茅市| 霍山县| 郧西县| 安宁市| 克什克腾旗| 皮山县| 都昌县| 堆龙德庆县| 洮南市| 尚志市| 龙门县| 永德县| 额敏县| 玛多县| 三原县| 汉中市| 九龙县| 大英县| 大新县| 江川县| 阳城县| 永安市| 肃南|