与HandlerThread通信的示例

我想从GUI线程设置HandlerThread。然后一段时间后,当在GUI上单击一个按钮时,它将运行callHello(),然后将消息发送到驻留在非GUI线程上的HelloLogger对象,该对象异步记录“ Hello World”。我已经尝试了很多方法,有的无限期地阻塞,有的从未收到消息,等等。下面的代码与我所获得的代码差不多,请有人对其进行修改以使其工作吗?


public class HandlerThreadExample {


    private MyHandlerThread mMyHandlerThread;

    private Looper mLooper;

    private Handler mHandler;


    public HandlerThreadExample(){

        mMyHandlerThread = new MyHandlerThread();

        mMyHandlerThread.start();

        mLooper = mMyHandlerThread.getLooper();

    }

    public void callHello() {

        mHandler.sendEmptyMessage(1);

    }

    private class MyHandlerThread extends HandlerThread {

        private HelloLogger mHelloLogger;

        private Handler mHandler;

        public MyHandlerThread() {

            super("The MyHandlerThread thread", HandlerThread.NORM_PRIORITY);

        }

        public void run (){

            mHelloLogger = new HelloLogger();

            mHandler = new Handler(getLooper()){

                public void handleMessage(Message msg){

                    mHelloLogger.logHello();

                }

            };

            super.run();

        }

    }

    private class HelloLogger {

        public HelloLogger (){

        }

        public void logHello(){

            Log.d("HandlerThreadExample", "Hello World");

        }

    }

}


繁花如伊
浏览 410回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android