Google 的 Android 版 gtalksms 在 Service 中使用了 Handler。当它启动处理程序线程时,它会存储线程 ID,然后在处理程序中进行以下检查:
if (Thread.currentThread().getId() != mHandlerThreadId) {
throw new IllegalThreadStateException();
}
我的问题是你为什么需要这种类型的检查?这是好习惯还是什么?我对多线程很陌生。
编辑:
为了清楚起见,这是 HandlerThread:
HandlerThread handlerThread = new HandlerThread("My.Service");
handlerThread.start();
mHandlerThreadId = handlerThread.getId();
ServiceHandler serviceHandler = new ServiceHandler(handlerThread.getLooper());