Android Handler Runnable Message Thread 简单用法

来源:互联网 发布:seo与sem有和区别 编辑:程序博客网 时间:2024/06/05 01:17
package com.tz.anr;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.Toast;public class MainActivity extends Activity implements OnClickListener {private Button start,ts,stop;private boolean flag;private int i = 0;private Handler handler = new Handler(){public void handleMessage(Message msg) {//消息接收到了int what = msg.what;switch (what) {case 1:String text = (String) msg.obj;ts.setText(text);break;case 2://刷新其他UIbreak;default:break;}};};/** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        start = (Button) findViewById(R.id.start);        ts = (Button) findViewById(R.id.ts);        stop = (Button) findViewById(R.id.stop);        start.setOnClickListener(this);        ts.setOnClickListener(this);        stop.setOnClickListener(this);        flag = true;        MyRunnableThread myRunnableThread = new MyRunnableThread();        Thread thread = new Thread(myRunnableThread);        thread.start();//连接服务//        Thread.sleep(10000);        //通过连接获取到的资源        if(i == 10001){        Toast.makeText(this, "danny is handsome", 3000).show();        }else{        Toast.makeText(this, "danny is very handsome", 3000).show();        }//        String threadName = Thread.currentThread().getName();//        Toast.makeText(this, threadName, 1000).show();    }public void onClick(View v) {switch (v.getId()) {case R.id.start://MyThread thread = new MyThread();thread.start();break;case R.id.ts://Toast.makeText(this, "吐司", 1000).show();handler.post(run_handler);break;case R.id.stop:handler.removeCallbacks(run_handler);//停止循环break;default:break;}}private Runnable run_handler = new Runnable() {public void run() {i++;ts.setText("runnable 刷新UI"+i+"次");handler.postDelayed(run_handler, 100);}};private class MyRunnableThread implements Runnable{public void run() {while(flag){i++;if(i>10000){flag = false;}}}}private class MyThread extends Thread{@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();//5秒以后让吐司文本变成Dannytry {Thread.sleep(5000);//ts.setText("Danny");//使用Handler//消息//Message msg = new Message();//初始化方式Message msg_ob = handler.obtainMessage();//使用了池的概念msg_ob.obj = "你家的牛在我菜园吃菜";msg_ob.what = 1;//企业开发用常量msg_ob.sendToTarget();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

0 0
原创粉丝点击