2012-11-19 100 views
1

比方說,我有一個產生2個線程的服務。 這2個線程可以訪問任何服務的方法。 有什麼辦法可以告訴(在一個方法中)哪個線程調用了它?我知道這樣一個機制存在Android的進程:我可以使用getCallingUid爲例,但是有什麼類似的線程以及?我可以告訴哪個線程調用了我的服務方法嗎?

謝謝

回答

1

Thread.currentThread()將始終傳遞當前線程。

+0

我想這跟Thread.getId是一樣的,不是嗎?我也會試試這個.. – EyalBellisha

+0

它不是。 getId()是實例方法,而currentThread()是靜態的 - 它提供了你調用它的線程。然後你可以使用它的getId() –

3

您可以使用currentThread方法來獲得線索,並使用getName得到它的名字:

String name = Thread.currentThread().getName(); 
Log.d("Service", "Called from " + name + " thread"); 

當您創建創建線程,你可以指定它在構造函數的名稱。請參閱Thread

+0

在我的情況下,線程沒有名稱(我可以這樣做,但我實際上是在Android框架內部執行此操作,所以我不希望做太多更改...) – EyalBellisha

+0

@androidcompile你究竟想要什麼?你可以從'Thread.currentThread()'獲得當前的線程名和id。你想用id或name來完成什麼? –

0

如果通過Thread.getId會怎麼樣?

+0

我想你的意思是把它放在服務的方法中。我會試試...不會只是返回服務自己的線程ID? – EyalBellisha

+0

只需在調用服務之前獲取線程代碼中的線程ID,並將其作爲參數傳遞給服務即可。 –

相關問題