Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> [android,12]12.handler 與message機制更改界面信息

[android,12]12.handler 與message機制更改界面信息

編輯:關於Android編程

使用消息機制修改界面的信息:

 

一、要修改view對象中顯示的內容:

只有創建view對象的線程 才可以更新view對象裡面的內容。

其實所有的view對象都是在主線程裡面創建的 名字 main

所有的與ui相關的界面都是在主線程裡面創建的.

 

二、業務需求:子線程每隔2秒要去修改view對象顯示的內容:(要通過消息機制完成該操作):

 

三、更新view顯示基本原理:

當子線程要更新view裡的內容時,就讓子線程發送一個消息給主線程,主線程再根據消息的內容進行操作。

主線程裡面有消息隊列(message queue),可以存放一組消息。並且還有一個輪詢器,定期的輪詢消息隊列,查看是否有消息。如果發現有消息,;輪詢器會把消息取出來。

在主線程中創建消息的處理者handler對象,用於處理在消息隊列中取出的消息。

 

四、代碼實現:

public class TestActivity extends Activity{

 

privateTextView tv;

//在主線程中創建handler對象(消息處理者)

private Handler handler = new Handler(){

//子線程發送消息觸發的函數:

public voidhandleMessage(Message msg) {

 

super.handleMessage(msg);

String text = (String) msg.obj; //獲取消息的內容

tv.setText(text); //將內容設置給view對象。

}

};

 

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

tv = (TextView) this.findViewById(R.id.tv);

System.out.println(Thread.currentThread().getName());

 

// tv.setText("haha");

 

//開啟一個子線程 每個2秒 就把textview 裡面的內容更改一下

 

new Thread(){

public void run() {

System.out.println("子線程 "+Thread.currentThread().getName());

for(int i=0;i<100;i++) {

try{

sleep(2000);

}catch (InterruptedException e) {

e.printStackTrace();

}

Messagemsg = new Message();//創建message對象。

msg.obj= "haha"+i; //為消息設置值

handler.sendMessage(msg);//使用handler在子線程中發送消息。

 

}

 

};

}.start();

}

}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved