老罗Handler(22)各种方式发送handler以及发送更多类型数据给主线程

来源:互联网 发布:c语言完全手册pdf下载 编辑:程序博客网 时间:2024/05/21 17:04
package com.example.handler2;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity {    private Button mButton;    private ImageView mImageView;    private final int SHOW_LOG = 321;    private Handler mHandler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            Log.d("==xiaoxi",String.valueOf(msg.arg1));            Log.d("==arg2:" ,String.valueOf(msg.arg2));            Log.d("==what:",String.valueOf(msg.what));            Log.d("==obg:",String.valueOf(msg.obj));            Log.d("==char[]",String.valueOf((msg.getData().getCharArray("xiaohong").length)));        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButton = (Button)findViewById(R.id.button1);        mImageView = (ImageView)findViewById(R.id.imageView1);        mButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                MyRunnable run = new MyRunnable();                Thread t = new Thread(run);                t.start();            }        });    }    private class MyRunnable implements Runnable{        @Override        public void run() {            //方式一//          Message msg = Message.obtain();//          msg.obj = "xiaoxi";//          msg.arg1 = 1;//          msg.arg2 = 2;//          msg.what = SHOW_LOG;//          mHandler.sendMessage(msg);            //方式二,比较简便//          Message msg = Message.obtain(mHandler);//          msg.arg1 = 1;//          msg.arg2 = 2;//          msg.obj = "xiaoming";//          msg.what = SHOW_LOG;//          msg.sendToTarget();            //方式三:存储比较复杂的数据类型char类型boolean类型StringArray类型等等            Message msg = Message.obtain(mHandler,SHOW_LOG,"xiaohong");            Bundle data = new Bundle();            data.putCharArray("xiaohong", new char[]{'h', 'o' ,'n','g'});            msg.setData(data);            msg.sendToTarget();        }    }}

结果:
结果

0 0