Android 用の Google の 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());