您的位置:首页 > 移动开发 > Android开发

Android Handler Runnable Message Thread 简单用法

2015-09-09 09:17 477 查看
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:
//刷新其他UI
break;
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{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
//5秒以后让吐司文本变成Danny
try {
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 block
e.printStackTrace();
}

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: