public class HandlerTest extends Activity implements OnClickListener {
int count;
static int x=100;
TextView tv ;
myH myHandler;
Button sStart;
Button sStop;
Button sdown;
//方法一
Thread t;
myThread m;
private boolean killMe = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.tv);
sStart = (Button)findViewById(R.id.sStart);
sStop = (Button)findViewById(R.id.sStop);
sdown = (Button)findViewById(R.id.sStop);
sStart.setOnClickListener(this);
sStop.setOnClickListener(this);
sdown.setOnClickListener(this);
//方法一
myHandler = new myH();
m = new myThread();
t = new Thread(m);
//或者
t = new Thread(r);
System.out.println("activity--->" + Thread.currentThread().getId());
System.out.println("activityname--->" + Thread.currentThread().getName());
}
//方法一开始
class myH extends Handler{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
System.out.println("obj=" + msg.obj);
switch(msg.what){
case 100:
System.out.println("---------");
String yy = (String)msg.obj;
tv.setText(yy);
break;
}
super.handleMessage(msg);
}
}
Runnable r = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
while (!killMe) {
Message message = new Message();
message.what = HandlerTest.x;
message.obj=String.valueOf(count++);
HandlerTest.this.myHandler.sendMessage(message); //发送一次消息,自动调用上面handler类的handleMessage函数,从而更新view类。
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
killRunnable();
}
}
}
};
//或者
class myThread implements Runnable {
public void run() {
while (!killMe) {
Message message = new Message();
message.what = HandlerTest.x;
message.obj=String.valueOf(count++);
HandlerTest.this.myHandler.sendMessage(message); //发送一次消息,自动调用上面handler类的handleMessage函数,从而更新view类。
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
killRunnable();
}
}
}
public void killRunnable()
{
killMe = true;
}
}
public void killRunnable()
{
killMe = true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.sStart:
t.start();
break;
case R.id.sStop:
System.out.println("sStop");
myHandler.removeMessages(0);
m.killRunnable();
break;
case R.id.sdown:
break;
}
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/sStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始计数"
/>
<Button
android:id="@+id/sStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止计数"
/>
<Button
android:id="@+id/sdown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始下载"
/>
</LinearLayout>