16

如果異步線程是獨立操作,主線程和不與主線程干擾線程..有人可以解釋startActivity(intent)和startActivityForResult(intent)是如何異步的?

做了新的Activity不佔用主線程已經通過startActivity(intent)啓動後?

大部分我所閱讀本說,這些都是異步的,但有一個公平的幾個相互矛盾的答案,並且說這真的不給予令人信服的論據的人。

因此,如果任何人誰擁有這清楚他們的頭和可以解釋爲什麼它們是同步/異步,我將是一個非常感激的人!

乾杯

編輯:所以我從這兩良好的民間和一些東西,在網上得到的答案..

瞻活動分爲同步/異步的混合會導致馬的負載來約。但它仍然是指原則..

Synchronous方法/命令之前必須完成的調用堆棧可以繼續。

Asynchronous方法/命令(在一個線程/的AsyncTask常見的做)繼續平行允許執行的主線程繼續。 (它可以在它自己的時間返回)

startActivity(intent)和startActivityForResult(intent)方法是異步的,因爲它們是非阻塞的並且允許執行線程在執行其相應的任務時繼續。

+5

不完全。 startActivity安排一個新的活動,以便稍後在UI線程上運行。它是異步的,因爲它不會馬上啓動,並且該方法立即返回。 – njzk2

+0

啊,謝謝!感謝幫助! – mgibson

+0

如果你想創建一個答案,我會接受它 – mgibson

回答

20

startActivity(intent)startActivityForResult(intent)是異步的,意思是這些方法立即返回而不啓動活動。實際上,他們只在當前活動的生命週期事件完成後才安排活動啓動。

外賣是,如果你有什麼,需要一些時間來完成,在第一項活動的onPause()方法中,新的Activity將啓動緩慢。

+2

完美和緊湊的答案! –

+0

它仍然可能是startActivity(Intent)本身調用onPause()。我在這裏進行推測,但是從你的答案來看,異步並不遵循。 其實我會檢查電話是否同步。 –

2

當你startActivityForResult你仍然執行異步調用。你的調用者活動被暫停,新的進程在另一個進程中啓動(如果它在不同的用戶下運行)。

但是,當被叫活動終止setting a result時,您的活動將恢復,您將得到onActivityResult作爲包含結果的回調。

相關問題