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

android Handler 学习

2011-11-19 23:03 162 查看
Handler 学习

1、处理线程队列

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 MainActivity extends Activity {

//声明两个控件
private Button btn1;
private Button btn2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(new StartButtonListener());
btn2 = (Button)findViewById(R.id.button2);
btn2.setOnClickListener(new EndButtonListener());

}

class StartButtonListener implements OnClickListener
{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//将线程updateThread投递到线程队列
handler.post(updateThread);
}

}

class EndButtonListener implements OnClickListener
{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//将线程updateThread移除线程队列
handler.removeCallbacks(updateThread);
}

}
Handler handler = new Handler();
Runnable updateThread = new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("updateThread");
//实现循环
handler.postDelayed(updateThread, 3000);
}
};

}
2、用Handler 实现ProgressDialog进度条

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
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;

public class MainActivity extends Activity {

//声明两个控件
private Button btn1;
private Button btn2;
private ProgressDialog processDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(new StartButtonListener());
btn2 = (Button)findViewById(R.id.button2);
btn2.setOnClickListener(new EndButtonListener());

}

class StartButtonListener implements OnClickListener
{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//将线程updateThread投递到线程队列
//handler.post(updateThread);
processDialog = new ProgressDialog(MainActivity.this);
processDialog.setIcon(R.drawable.ic_launcher);
processDialog.setTitle("进度条");
processDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
processDialog.setMax(100);
processDialog.show();
handler.post(updateThread);
}

}

class EndButtonListener implements OnClickListener
{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//将线程updateThread移除线程队列
handler.removeCallbacks(updateThread);
}

}
Handler handler = new Handler(){

@Override
public void handleMessage(Message msg)
{
processDialog.setProgress(msg.arg1);
handler.post(updateThread);
}
};
Runnable updateThread = new Runnable() {
int i=0;
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("ProcessDialog");
i=i+1;
//得到一个消息对象,Message类
Message msg = handler.obtainMessage();
//将msg对象的值设置为i
msg.arg1=i;
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.sendMessage(msg);
if(i==100)
{
handler.removeCallbacks(updateThread);
}
}
};

}

handler post()把一个线程加到线程队列中

//取出消息队列中的消息

Message msg = handler.obtainMessage();

//移除消息队列

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