Google的gtalksms for Android使用Service中的Handler。當它開始的處理器線程它存儲線程ID,然後在處理程序具有以下檢查:Android線程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());
這會檢查當前線程是一樣的UI線程。 – 2013-05-12 11:50:24
我不這麼認爲,這是Handler線程的線程ID。 – shmish111 2013-05-12 12:50:14
處理程序沒有自己的線程,它在UI線程上運行 – 2013-05-12 12:51:11