2014-09-23 85 views
0

我是Android和Java的新手。我需要對線索及其與活動的關係進行澄清。我在考慮這種情況:在後臺運行的代碼可以在兩個活動中看到。我不知道這是否可以使用線程來實現。從我讀過的內容來看,使用服務不會有任何問題,但是我不確定在線程的情況下,所以在這裏我的問題是:如果線程在後臺運行,它是否可以「可見」兩個或更多的活動?例如,有關線程的最基本示例會更改某些活動中的文本或更新進度欄的值,但是,是否可以使用同一個線程在第二個活動中執行相同的操作?或者我需要爲第二個活動創建一個新的線程來做同樣的事情?對於這種情況,服務是否更好?Android,活動和主題

謝謝。

+1

就是你能看見意思?請徹底解釋。線程無法更新任何UI組件,只有UI線程纔可以。 – 0101100101 2014-09-23 08:37:52

+0

我是新來的Java,所以可能不是正確的術語。可見的意思是可以從一個或多個活動中訪問線程。 – Madbyte 2014-09-23 09:17:21

回答

0

如果一個線程在後臺運行,它可以是「可見」的兩個或 更多的活動?

如果我理解「可見」,因爲它可以訪問這些Activity實例,那麼是的,爲什麼不呢?這只是另一個對象。

例如,關於線程最基本的樣本變化 文本的一些活動或更新進度條的值,但是,可以在這個 相同的線程可以用來做第二個活動一樣嗎?

當然。請記住,唯一可以繪製UI的線程是UI線程(也稱爲主線程或系統線程)。要從您創建的任何其他線程執行任何UI更新,您需要致電runOnUiThread()

對於這種情況,服務更好嗎?

如果此線程僅用於更新您的應用程序UI,那麼後臺線程是最佳解決方案。服務在您的應用程序關閉後將繼續運行,並且您還需要執行IPC來交流應用程序和服務,這比較慢並且需要更多代碼。

您也可以考慮使用AsyncTask相反,它是更適合您的情況,因爲它的一些方法,直接在UI線程上運行(這樣你就不會需要runOnUiThread

+0

謝謝。是的,根據你的理解,我確實使用了「可見」這個術語。 – Madbyte 2014-09-23 09:27:54