我在代码中做了一个错误的印刷,发现了有趣的行为。当您使用sendMessage发送多个相同的消息时,处理程序将停止接收消息。例如:
HandlerThread thread = new HandlerThread("ServiceStartArguments", android.os.Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
// Get the HandlerThread's Looper and use it for our Handler
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);
Message msg = mServiceHandler.obtainMessage();
msg.what = action;
mServiceHandler.sendMessage(msg);
mServiceHandler.sendMessage(msg);
如你所见,我打了两次电话mServiceHandler.sendMessage(msg)
。第二次通话后mServiceHandler
停止接收任何进一步的消息。
有人可以解释这种行为吗?我在文档中找不到任何相关内容。
代码在模拟器中使用Android 4.4.2进行测试。