Handler实现线程消息通信
16lz
2021-01-26
在android中Handler类通常作为不同线程间通信的手段,既可以实现线程的互斥,也可以实现同步。
下面以一个简单的例子来说明如何实现两个线程间的通信。
import android.app.Activity;
import android.os.Bundle;import android.os.Message;import android.util.Log;import android.os.Handler;public class MyHandler extends Activity {static final String TAG = "Handler";static final int HANDLER_TEST = 1;Handler h = new Handler(){public void handleMessage (Message msg){switch(msg.what){case HANDLER_TEST:Log.d(TAG, "The handler thread id = " + Thread.currentThread().getId() + " ");break;}}};/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(TAG, "The main thread id = " + Thread.currentThread().getId() + " ");new myThread().start();setContentView(R.layout.main)//此处为activity的主线程}class myThread extends Thread{//新创建的线程,通过Handler.sendMessage(Message msg);实现子线程与主线程间通信public void run(){Message msg = new Message();msg.what = HANDLER_TEST;h.sendMessage(msg);Log.d(TAG, "The worker thread id = " + Thread.currentThread().getId() + " ");}}}
通过子线程和主线程间通信实现同步和互斥。
更多相关文章
- Android(安卓)使用线程更新UI(附带计时器demo)
- Android(安卓)Framework 源码之旅 —— 正识Binder
- 【Android游戏开发十五】关于Android(安卓)游戏开发中 OnTouchEv
- Android异步处理类AsyncTask
- android andbase 线程池
- Android(安卓)Fragment与Fragment、Activity通信的方式的总结
- android之Can't create handler inside thread that has not cal
- Thread、Handler和HandlerThread关系详解
- 从J2EE转向Android的第五天-----ProgressDialog