我已經簡單Activity
調用AsyncTask
,所以我就打印和Proces
一些Thread
的ID:安卓:Process.myTid()VS Thread.currentThread()的getId()
From onCreate android.os.Process.myUid(): 10137
From onCreate android.os.Process.myPid(): 29776
From onCreate android.os.Process.myTid(): 29776
From onCreate Thread.currentThread().getId(): 1
/****************************************************************/
From Async doInBackground android.os.Process.myUid(): 10137
From Async doInBackground android.os.Process.myPid(): 29776
From Async doInBackground android.os.Process.myTid(): 30426
From Async doInBackground Thread.currentThread().getId(): 12556
Uid
是相同的因爲它app-specific sandbox- 與
Pid
類似:Each app is oneProcess
- 在
onCreate
3號線相同Pid
因爲它是UIThread
和Android操作系統爲基於Linux,我們知道關於Process
實際上是Thread
等這個問題......而在Async
的ThreadId
是不同的,因爲AsyncTask
不同Thread
運行而不是在UIThread
我很難理解的是Thread.currentThread().getId()
。我期望的是在相同的執行環境下獲得與Thread.currentThread().getId()
相同的id。例如對於onCreate
我希望3,4行相同(29776),對於Async
我希望行3,4相同(30426)。這裏發生了什麼?
謝謝,
什麼'AsyncTask'方法你記錄ID? – Onik
@Onik'onCreate'(Activity)正在調用常規'new SomeTask()。execute();'哪個是常規Android'AsyncTask' – michael
當然!你記錄的ID?如果是這樣,我明白你記錄的方法之一是'Activity'的'onCreate()'。另一個(在'AsyncTask'中)是什麼? – Onik