当消息队列中有消息时,工作线程确实可以工作,否则它处于空闲状态。线程空闲时,我们可以在该线程中做一些工作吗?

时间:2020-06-25 17:09:00

标签: android multithreading android-handler android-looper

此工作线程确实遍历其消息队列,并拉出消息并执行适当的工作。但是我也想在它闲置时将其用于其他作品。有办法吗?

private class MyWorkerThread extends Thread{
    // This is worker thread handler.
    public Handler workerThreadHandler;

    @Override
    public void run() {
        // Prepare child thread Lopper object.
        Looper.prepare();

        // Create child thread Handler.
        workerThreadHandler = new Handler(Looper.myLooper()){
            @Override
            public void handleMessage(Message msg) {
                // When child thread handler get message from child thread message queue.
                Log.i("CHILD_THREAD", "Receive message from main thread.");
                Message message = new Message();
                message.what = msg.what;
                // Send the message back to main thread message queue use main thread message Handler.
                mainThreadHandler.sendMessage(message);
            }
        };
        // Loop the child thread message queue.
        Looper.loop();

        // The code after Looper.loop() will not be executed until you call 
        workerThreadHandler.getLooper().quit()
        Log.i("CHILD_THREAD", "This log is printed after Looper.loop() method. Only when this thread loop quit can this log be printed.");
        // Send a message to main thread.
        Message msg = new Message();
        msg.what = CHILD_THREAD_QUIT_LOOPER;
        mainThreadHandler.sendMessage(msg);
    }
}

0 个答案:

没有答案