国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android開發教程之子線程中更新界面

2020-04-11 11:55:58
字體:
來源:轉載
供稿:網友

每個Handler對象與創建它的線程相關聯,并且每個Handler對象只能與一個線程相關聯。
Handler一般有兩種用途:1)執行計劃任務,你可以再預定的實現執行某些任務,可以模擬定時器。2)線程間通信。在Android的應用啟動時,會創建一個主線程,主線程會創建一個消息隊列來處理各種消息。當你創建子線程時,你可以再你的子線程中拿到父線程中創建的Handler對象,就可以通過該對象向父線程的消息隊列發送消息了。由于Android要求在UI線程中更新界面,因此,可以通過該方法在其它線程中更新界面。

通過Runnable在子線程中更新界面的例子

在onCreate中創建Handler

復制代碼 代碼如下:

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();//創建Handler
   mText = (TextView) findViewById(R.id.text0);//一個TextView
   }

構建Runnable對象,在runnable中更新界面,此處,我們修改了TextView的文字.此處需要說明的是,Runnable對象可以再主線程中創建,也可以再子線程中創建。我們此處是在子線程中創建的。
復制代碼 代碼如下:

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

創建子線程,在線程的run函數中,我們向主線程的消息隊列發送了一個runnable來更新界面。

復制代碼 代碼如下:

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

用Message在子線程中來更新界面
用Message更新界面與Runnable更新界面類似,只是需要修改幾個地方。
實現自己的Handler,對消息進行處理

復制代碼 代碼如下:

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

在新的線程中發送消息

復制代碼 代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鸡西市| 宝应县| 阿拉善右旗| 塔河县| 松桃| 巍山| 亳州市| 福鼎市| 汝城县| 万年县| 山东省| 化德县| 阿克苏市| 都兰县| 兴文县| 德清县| 云林县| 青神县| 江山市| 郴州市| 萨迦县| 哈尔滨市| 大埔县| 黔东| 石河子市| 余姚市| 湘潭县| 香港| 特克斯县| 汤阴县| 灵宝市| 盘山县| 晋州市| 云林县| 台江县| 临安市| 汝南县| 双辽市| 开鲁县| 太原市| 前郭尔|