创建Handler
private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch(msg.what){case 1 : String str1 = msg.getData().getString("text1");//接受msg传递过来的参数String str2 = msg.getData().getString("text2");//接受msg传递过来的参数Log.i("lgq","..ab ==7....11......"+str1);break;}}
};
传递参数
Message msg = new Message();
msg.what = 1;
Bundle bundle = new Bundle();
bundle.putString("text1","梅西的消息传递参数的例子!"); //往Bundle中存放数据
bundle.putString("text2","Time:2016-11-03"); //往Bundle中put数据
msg.setData(bundle);//mes利用Bundle传递数据
handler.sendMessage(msg);//用activity中的handler发送消息
handler子线程和主线程通讯
public class HandleActivity extends AppCompatActivity {public static final String TAG = "MainActivity";private Handler mThreadHandler;private Handler mMainHandler = new Handler(new Handler.Callback() {// 主线程接收到子线程发送的消息@Overridepublic boolean handleMessage(Message msg) {if (msg.obj != null) {Log.e(TAG, msg.obj.toString());mThreadReplyText.setText("收到子线程回复:" + msg.obj.toString());}return true;}});private EditText mMainEditText;private TextView mThreadReplyText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.handleactivity);mMainEditText = findViewById(R.id.main_edit_text);mThreadReplyText = findViewById(R.id.thread_reply_text);new Thread(new Runnable() {@Overridepublic void run() {Looper.prepare();mThreadHandler = new Handler(new Handler.Callback() {// 子线程接收到主线程发送的消息并回复@Overridepublic boolean handleMessage(Message msg) {if (msg.obj != null) {Message reply = Message.obtain();reply.obj = "主线程说\"" + msg.obj.toString()+"\"";// 在子线程中使用主线程中的Handler对象的引用向主线程发送消息mMainHandler.sendMessage(reply);}return true;}});Looper.loop();}}).start();}public void onClick(View view) {switch (view.getId()) {case R.id.main_send_button:Message message = Message.obtain();message.obj = mMainEditText.getText();// 主线程向子线程发送消息:在主线程中使用子线程中的Handler对象的引用向子线程发送消息if (mThreadHandler != null) {mThreadHandler.sendMessage(message);} else {while (mThreadHandler == null) {Log.e(TAG, "子线程还没有完成ThreadHandler的创建");if (mThreadHandler != null) {Log.e(TAG, "ThreadHandler创建完成!");mThreadHandler.sendMessage(message);}}}break;}} }