Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> .Net程序員玩轉Android開發---(17)Handler用法

.Net程序員玩轉Android開發---(17)Handler用法

編輯:關於Android編程

在android開發中,如果在一個線程中想更新主界面中控件顯示的數據,直接給主界面控件賦值就會出現異常,android中為了安全起見,是不允許在線程中更新界面控件的數據,遇到這種情況,我們可以使用Handler. Handler就是處理界面和線程間的消息傳遞,通信的組件。下面我們演示下handler處理詳細的兩種辦法,下面的這個列子通過點擊不同按鈕展現handler.post和handler.sendmsg兩個傳遞消息的方法。

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316105600.png

1. Handler.Post

創建一個handler對象和Runnable對象,通過handler.post(new Runnable(){});處理來更新界面中的textview的數據

2.Handler.sendMessage

這個例子中,我們創建一個employee員工類,單擊按鈕的時候,顯示員工的信息,通過handler.sendmessage來傳遞消息和參數進行處理

 

 

package com.example.helloword;



import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class HandlerActivity extends Activity {

	
	private TextView tv;
	
	private Button btnpost;
	
	private Button btnmsg;
	
	private Handler handler=new Handler();//post處理handler
	
	//sendmsg處理handler
	private Handler handlerTwo=new Handler(){
		
		public void handleMessage(Message msg) {
			
			switch (msg.what) {
			case 0:
				tv.setText(姓名:+((employee)msg.obj).name);
				break;
			
			}

		}
	};
	
	protected void onCreate(Bundle savedInstanceState) 
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.handlerlayout);
		tv=(TextView)findViewById(R.id.textViewMsg);
		
		btnpost=(Button)findViewById(R.id.btnpost);
		btnmsg=(Button)findViewById(R.id.btnmsg);
		
		btnpost.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Thread thread=new Thread(new Runnable()
				{

					@Override
					public void run() {
						// TODO Auto-generated method stub
						handler.post(runOne);
					}
				}
				);
				
				thread.start();
			}
		});
		
		
		btnmsg.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Thread thread=new Thread(new Runnable()
				{
					@Override
					public void run() {
						// TODO Auto-generated method stub
						Message msg=new Message();
						msg.arg1=1;
						
						employee employeeone=new employee();
						employeeone.name=員工1;
						employeeone.age=20;
						msg.obj=employeeone;
						msg.what=0;
						
						handlerTwo.sendMessage(msg);
					}
				}
				);
				
				thread.start();
			}
		});
	
	}
	
	
    Runnable  runOne=new Runnable(){
		@Override
		public void run() {
			// TODO Auto-generated method stub
			tv.setText(正在執行handler post);
		}
    };
    
    
    public class employee
    {
    	  public String name;
    	  public int age;
    }
}




 

 

 

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