package cn.ucai.handler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class HandlerDemoActivity extends Activity implements OnClickListener {
private Button start_but, stop_btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start_but = (Button) findViewById(R.id.start);
stop_btn = (Button) findViewById(R.id.stop);
start_but.setOnClickListener(this);
stop_btn.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
handler.post(runnable);
break;
case R.id.stop:
handler.removeCallbacks(runnable);
break;
}
}
Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
System.out.println("runnable");
handler.postDelayed(runnable, 3000);
}
};
}
结果分析:
点击start按钮每隔3秒打印runnable,点击stop按钮停止。
package cn.ucai.handler2;
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.ProgressBar;
public class HandlerDemo2Activity extends Activity implements OnClickListener {
private Button start_btn, stop_btn;
private ProgressBar pb;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start_btn = (Button) findViewById(R.id.start);
stop_btn = (Button) findViewById(R.id.stop);
pb = (ProgressBar) findViewById(R.id.pb);
start_btn.setOnClickListener(this);
stop_btn.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
handler.post(runnable);
System.out.println("start ------- duolyn");
break;
case R.id.stop:
System.out.println("stop ------- duolyn");
handler.removeCallbacks(runnable);
break;
}
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
pb.setProgress(msg.arg1);
handler.post(runnable);
if (msg.arg1 == 100) {
handler.removeCallbacks(runnable);
}
}
};
Runnable runnable = new Runnable() {
int i = 0;
public void run() {
i += 10;
Message message = handler.obtainMessage();
message.arg1 = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.sendMessage(message);
}
};
}