2013-01-14 176 views
3

剛剛進入Android開發。有一定的Java經驗,包括線程。我一直在檢查BluetoothChat示例,我很困惑地看到onPause()和onResume()方法是同步的。由於這兩個只在UI線程上執行,我不明白爲什麼這是必需的。Android藍牙聊天示例 - 同步onPause()

回答

0

僅僅因爲onPause()只在主體上運行,並不意味着其他線程不能同時運行。這只是確保在另一個線程正在運行並且想要訪問onPause()將使用/修改的變量時的安全線程化。

在我看來,唯一能阻止的是如果有人在完成初始化之前完成活動(即完成調用onResume())。我的猜測是,它會阻止您或任何其他線程在達到運行狀態之前完成活動。

另請參閱此question

+0

我明白你在說什麼,但我不認爲成立。同步方法阻止同時調用特定實例上的多個同步方法。 onPause()和onResume()是Activity中唯一同步的方法,並且它們永遠不會並行調用,因爲它們位於同一個線程中。可以調用對象的非同步方法,並修改同步方法中使用的字段(通常可能不是一個好主意)。 – SteveR

+0

看到最新的編輯 – Joel

+0

雖然,我認爲這已經是活動生命週期的工作原理。 – Joel

0

processes and threads Android開發者文檔做好解釋應用程序的生命週期是如何工作的,並在那裏線程適應。

+0

我前段時間看過該文檔,但有助於更新我對Android在此領域的理解....但是,我沒有看到任何有助於回答我的問題的內容。 – SteveR

+0

我認爲他們是同步的,因爲應用程序生命週期的工作方式。 onPause和onResume不能同時被調用。 – Rarw

+0

你是否建議使用同步來執行該操作?我還沒有看到任何暗示這是必要的。我的理解是系統不會同時調用onPause和onResume ... Joel給出的鏈接表示其他人與我有同樣的問題。 – SteveR