概述
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();
}
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.message.MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:text="发送消息" />
</RelativeLayout>
第三种方式
第四种方式
第五种方式
免积分源代码下载
最后
以上就是土豪果汁为你收集整理的Handler消息传递机制(二)Message的各种使用的全部内容,希望文章能够帮你解决Handler消息传递机制(二)Message的各种使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复