主執行緒和子執行緒通訊,主執行緒用bundle傳送資料到子執行緒
阿新 • • 發佈:2019-02-11
package com.wangcan; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("當前執行緒的id是:"+Thread.currentThread().getId()); System.out.println("當前執行緒的名稱是:"+Thread.currentThread().getName()); HandlerThread htThread=new HandlerThread("myht"); htThread.start(); Handler mHandler=new Handler(htThread.getLooper()){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub //super.handleMessage(msg); Bundle b2= msg.getData(); int age= b2.getInt("age"); String name = b2.getString("name"); Log.d("TAG", "age:" + age + ", name:" + name); Log.d("TAG", "handler-->" + Thread.currentThread().getId()); Log.d("TAG", "handleMessage"); } }; Message msg = mHandler.obtainMessage(); //將msg傳送到目標物件,就是生成該msg的Handler物件 Bundle b = new Bundle();//使用Bundle來傳遞資料 b.putInt("age", 20); b.putString("name", "John"); msg.setData(b); msg.sendToTarget(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }