首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

主线程向子线程发送讯息

2012-08-28 
主线程向子线程发送消息?public class TestHandler extends Activity {?Button m_startbtn Button m_endb

主线程向子线程发送消息

?

public class TestHandler extends Activity {

?

Button m_startbtn ;

Button m_endbtn;

MyThreadHandler m_threadHandler;

?

/** Called when the activity is first created. */

?? ?@Override

?? ?public void onCreate(Bundle savedInstanceState) {

?? ? ? ?super.onCreate(savedInstanceState);

?? ? ? ?setContentView(R.layout.main);

?? ? ? ?System.out.println(Thread.currentThread().getId());

?

?? ? ? ?m_startbtn = (Button)findViewById(R.id.start);

?? ? ? ?m_startbtn.setOnClickListener(new StartOnClickListener());

?? ?new MyThread().start();

?? ?}

?

?

?? ?class StartOnClickListener implements OnClickListener

?? ?{

?

@Override

public void onClick(View v) {

//在主线程中获取子线程的message对象然后再发送

Message msg = m_threadHandler.obtainMessage(1,1,1,"主线程发消息了");

m_threadHandler.sendMessage(msg);

}

?

?? ?}

?

?

?? ?class MyThread extends Thread

?? ?{

?? ?@Override

?? ?public void run()

?? ?{

?? ?

//创建该线程的Looper对象,用于接收消息?

?? ?Looper.prepare();

//线程的looper创建的handler表示消息接收者是子线程

?? ?m_threadHandler = new MyThreadHandler(Looper.myLooper());

//循环从MessageQueue中取消息。?

?? ?Looper.loop();

?? ?}

?? ?}

?

?? ?class MyThreadHandler extends Handler

?? ?{

?? ?public MyThreadHandler(Looper loop)

?? ?{

?? ?super(loop);

?? ?}

?? ?

?? ?@Override

?? ?public void handleMessage(Message msg)

?? ?{

?? ?super.handleMessage(msg);

//消息处理

?? ?System.out.println("我是子线程的Handler,收到了消息:"+(String)msg.obj);

?? ?}

?? ?

?? ?}

?

?

}

热点排行