Android 多线程更新控件

package com.example.androidapp;

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

public class MainActivity extends Activity {

	private TextView textView1=null;
	private Button startButton=null;
	private Button endButton=null;
	/*创建Handler对象,作为进程传递postDelayed之用*/
	private Handler objHandler=new Handler();
	/* 在MainActivity中定义Handler对象作为成员变量
	 * 通过Handler这个对象对主线程中的控件进行更新
	 * */
	private Handler handler=new Handler(){
		
		public void handleMessage(Message msg){
			
			switch (msg.what) {
			case 0:
				/*取出参数更新控件*/
				textView1.setText(msg.getData().getString("counter"));
				break;
			default:
				break;
			}
			super.handleMessage(msg);
		}
	};
	
	private Runnable myRunnable=new Runnable() {
		
		private int counter=0;
		
		@Override
		public void run() {
			/*传参*/
	        Message msg=new Message();
	        msg.what=0;
	        Bundle bundle=new Bundle();
	        bundle.putString("counter", String.valueOf(++counter));
	        msg.setData(bundle);
	        /*发送信息到Handler*/
	        handler.sendMessage(msg);
	        /*再次调用此Runnable对象,以实现每1秒实现一次的定时器操作*/
	        objHandler.postDelayed(myRunnable, 1000);
		}
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		textView1=(TextView)findViewById(R.id.textView1);
		/*开始线程*/
		startButton=(Button)findViewById(R.id.startButton);
		startButton.setOnClickListener(new Button.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				/*开始线程,调用Runnable*/
				objHandler.post(myRunnable);
			}
		});
		/*结束线程*/
		endButton=(Button)findViewById(R.id.endButton);
		endButton.setOnClickListener(new Button.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				/*结束线程,删除mTask运行线程*/
				objHandler.removeCallbacks(myRunnable);
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值