直接上代码吧,xml就不上了,就是一个测试demo
package com.example.justtest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements
android.view.View.OnClickListener {
Button btn1;
Button btn2;
EditText editText1;
int time = 60;
boolean terminateCount = false;
private Handler mHandler;
private HandlerThread mHandlerThread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) this.findViewById(R.id.button1);
btn2 = (Button) this.findViewById(R.id.button2);
editText1 = (EditText) this.findViewById(R.id.editText1);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
HandlerThread mHandlerThread = new HandlerThread("count", 5);
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
}
Thread oneSecondThread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
if (time > 0 && !terminateCount) {
System.out.println("time = " + time);
time--;
Thread.sleep(1000);
Message msg = new Message();
msg.arg1 = time;
uiHandler.sendMessage(msg);
}
} catch (Exception e) {
// TODO: handle exception
}
}
});
Handler uiHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (time > 0 && !terminateCount) {
btn1.setText(msg.arg1 + "s");
mHandler.post(oneSecondThread);
}else{
btn1.setText("recount");
btn1.setEnabled(true);
}
}
};
@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;
}
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
if (view == btn1) {
System.out.println("btn1");
time = 10;
terminateCount = false;
btn1.setEnabled(false);
mHandler.post(oneSecondThread);
} else if (view == btn2) {
terminateCount = true;
time = 0;
btn1.setEnabled(true);
Toast.makeText(this, "stop", Toast.LENGTH_SHORT).show();
}
}
}