1. 程式人生 > >主執行緒和子執行緒通訊,主執行緒用bundle傳送資料到子執行緒

主執行緒和子執行緒通訊,主執行緒用bundle傳送資料到子執行緒

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;
}
}