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

Android学习之多线程开发总结<一>

2013-12-31 11:27 513 查看
private Handler mHandler = new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if(nProgressDialog != null && nProgressDialog.isShowing()){
nProgressDialog.dismiss();
}
switch (msg.what) {
case 1:
System.out.println("-----------1--------------");
System.out.println(msg.getData().getString("s1"));
System.out.println(msg.getData().getString("s2"));
try {
//TODO
} catch (Exception e) {
e.printStackTrace();
}
break;
case 2:
Toast.makeText(getApplicationContext(), "information", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(getApplicationContext(), "information", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
super.handleMessage(msg);
}
};

private Runnable mRunnable = new Runnable() {

@Override
public void run() {

try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}

//TODO 具体操作

Message msg = new Message();
msg.what = 0;
msg.obj = null;
mHandler.sendMessage(msg);
}
};

private Runnable nRunnable = new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
String s1 = "fsdfsgfdsgdfgfdgdhshshs";
String s2 = "fsfsdgdshdhdshrehreherh";

Message msg = new Message();
msg.what = 1;
Bundle bundle = new Bundle();
bundle.putString("s1", s1);
bundle.putString("s2", s2);
msg.setData(bundle);
MainActivity.this.mHandler.sendMessage(msg);
}
};

//如何调用
ProgressDialog nProgressDialog = ProgressDialog.show(MainActivity.this, "正在查询", "操作需要稍长时间,请耐心等待!");
Thread thread = new Thread(mRunnable);
thread.start();
thread = null;

//创建一个新的线程来执行xxx等相应操作
new Thread(new Runnable() {

@Override
public void run() {
try {
//更新UI
String mInfo = "information\n";
mHandler.sendMessage(mHandler.obtainMessage(0, mInfo));
} catch (Exception e) {
e.printStackTrace();
}

}
}).start();

private class mThread extends Thread{
public void run() {
// TODO Auto-generated method stub
String s1 = "fsdfsgfdsgdfgfdgdhshshs";
String s2 = "fsfsdgdshdhdshrehreherh";

Message msg = new Message();
msg.what = 1;
Bundle bundle = new Bundle();
bundle.putString("s1", s1);
bundle.putString("s2", s2);
msg.setData(bundle);
MainActivity.this.mHandler.sendMessage(msg);
}
}

//如何调用
ProgressDialog nProgressDialog = ProgressDialog.show(MainActivity.this, "正在查询", "操作需要稍长时间,请耐心等待!");
mThread thread = new mThread();
thread.start();
thread = null;

//注意以下区别
Message msg = new Message();
msg.what = 0;
msg.obj = null;
mHandler.sendMessage(msg);

Message msg = mHandler.obtainMessage();
msg.what = xxx;
msg.arg1 = xxx;
msg.arg2 = xxx;
msg.obj = xxx;
msg.sendToTarget();

//For example
mHandler.obtainMessage(0, arg1, -1).sendToTarget();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: