Android中Handler(二)

package com.Handler4;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;

public class Handler4Activity extends Activity {
    /** Called when the activity is first created. */
	private TextView textView;
	private MyHandler myHandler=new MyHandler();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView=(TextView)this.findViewById(R.id.textView1);
    }
    class MyHandler extends Handler{
    	//从消息队列中取出并handleMessage处理消息
    	@Override
    	public void handleMessage(Message msg) {
    		textView.setText((String)msg.obj);
    	}
    }
    public void download(View view){
    	Thread thread=new Thread(new Runnable() {
			
			@Override
			public void run() {
				try {
					String s="zhangzhao";
					Thread.sleep(5000);
					//数据发送出来
					//textView.setText(s);
					Message message=Message.obtain();//最好不要new,这个obtain会节省资源
					message.obj=s;
					myHandler.sendMessage(message);//没有指定looper那么就会发送给主线程中的looper
					
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
			
		});
    	thread.start();//会出错原因是在非UI线程里面直接操作UI
    	//主线程维护了一个消息对列,当其他的线程有数据需要传递给主线程的时候,你就把数据封装成一个Message对象,然后放在主线程的
    	//消息队列中去,对应消息的处理由Looper,子线程通过Handler把下载完的数据封装到Message里面,然后把消息取出来交给Handler进行处理
    	//通过Handle和Message实现两个线程之间达到共享数据
    }
}


 

package com.Handler5;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class Handler5Activity extends Activity {
    /** Called when the activity is first created. */
	private ProgressBar progressBar;
	private Button button;
	private TextView textView;
	private MyHandler myHandler=new MyHandler();
	int i=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
   
        setContentView(R.layout.main);
        progressBar = (ProgressBar)this.findViewById(R.id.progressBar1);
        textView=(TextView)this.findViewById(R.id.textView1);
    }
    class MyHandler extends Handler{
    	@Override
    	public void handleMessage(Message msg) {
    		int pos =(Integer)msg.obj;
    		progressBar.setProgress(pos);
    		textView.setText(pos+"%");
    		
    	}
    }
    public void downLoad(View view){
    	 
    	new Thread(new Runnable() {
			
			@Override
			public void run() {
				while(i<=100){
					try {
						Thread.sleep(300);
						i+=10;
						Message message=Message.obtain();
						message.obj=i;
						myHandler.sendMessage(message);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				
				}
				
			}
		}).start();
    }
}


效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值