package com.example.message;
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;
public class MainActivity extends Activity {
private Button button;
private Handler handler = new Handler(){
public void handleMessage(Message msg){
int what = msg.what;
int arg1 = msg.arg1;
int arg2 = msg.arg2;
Object obj = msg.obj;
Bundle data = msg.getData();//前四种没有data
System.out.println("what-->>"+what);
System.out.println("arg1-->>"+arg1);
System.out.println("arg2-->>"+arg2);
System.out.println("obj--->>"+obj);
System.out.println("data--->>"+data.getStringArray("str").length);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new Thread(new MyThread()).start();
}
});
}
public class MyThread implements Runnable{
@Override
public void run() {
/*
* 用obtain获得一个资讯,会从资讯池中取出一个资讯(资讯池不为null),
* 资讯池的资讯减1。如果资讯池为空,则调用new Message新建一个
*/
/*第一种方法
Message message = Message.obtain();
message.what = 1;
message.arg1 = 2;
message.arg2 = 3;
message.obj = "lin";
handler.sendMessage(message);
*/
/*第二种方法
Message message = Message.obtain(handler);
message.what = 1;
message.arg1 = 2;
message.arg2 = 3;
message.obj = "lin";
//把发送对象target置为当前传入的handler,故不能用sendMessage
message.sendToTarget();
*/
/*
* 第三种方法
* 第一个参数:Handler
* 第二个参数:what
Message message = Message.obtain(handler, 66);
message.arg1 = 1;
message.arg2 = 2;
message.obj = "monkey";
message.sendToTarget();
*/
/*第四种方法
* 第一个参数:Handler
* 第二个参数:what
* 第三个参数:arg1
* 第四个参数:arg2
* 第五个参数:obj
Message message = Message.obtain(handler, 1, 2, 3, "Mary");
message.sendToTarget();
*/
/*第五种方法
* 第一个参数:what
* 第二个参数:obj
*/
Message message = Message.obtain(handler, 1, "Rose");
//除此以外还可以用setData传递一些比拟庞杂的数据,八种数据类型中的数据都可以传递
Bundle data = new Bundle();
data.putStringArray("str", new String[]{"Rose","Jackson"});
message.setData(data);
message.sendToTarget();
}
}
}package com.example.message;
import android.app.A