2011-09-27 42 views
0

我的Android應用程序擴展了一些Thread和AsyncTask類。加載活動時我使用了這些類中的任何一個。我這樣做是爲了運行一個I/O任務,並且如果加載時間超過一秒鐘,就向用戶顯示一個對話框。可以肯定地說,一次只會運行一個線程或AsynTask(不包括主UI)。我需要一個線程池嗎?使用線程類和AsyncTask類的線程池

回答

1

不,它不會安全地假設。很可能會有多個線程運行(儘管在單個核心上) - 您應該關心的是您可以真正控制的內容 - 確保您的用戶沒有不好的體驗 - 我認爲您已經在保持這種狀態用於UI的單獨線程。

實際上,通過使用AsyncTask,可以從同一個活動本身運行多個線程(不包括UI線程)。 Android本身有很多線程在運行,它也有一定的優先級需要被尊重。如果我們通過編寫自己的線程池來解決優先級問題(我懷疑我們是否可以訪問非監禁手機上的所有線程),則系統可能會變得不穩定並可能導致頻繁崩潰。

Android有一個內置的算法來調用垃圾收集器,並殺死線程,如果他們貪婪/捱餓其他線程死亡。因此,在設計一個好的應用程序時,我們還需要覆蓋這樣的角落案例,否則我們會在service.start()中得到大量的NPE,而且這個過程非常隨機。

此外,從最新的手機,它看起來像雙核更新的手機已經出來:)