2014-08-28 114 views
0

一些文本 「SYNCHRONUS行動」 從Android的書:關於android系統

「然而,自Android 3.0,同步操作不能 再直接從UI線程上運行。」

我認爲每個運行在某個線程中的代碼都是「同步操作」 那麼,什麼是「同步操作」呢?

了Android運行時如何檢測的代碼是一個「同步操作」

+1

可能是不正確的措辭,並且意味着長時間運行的操作不能在沒有android抱怨的UI線程中運行。 – ataulm 2014-08-28 20:27:35

+0

此外,在UI線程上執行任何類型的網絡操作都會導致引發異常。 – Alexandre 2014-08-28 20:32:37

+0

我想象一下,「同步操作」這個短語是在你正在閱讀的任何主題的背景下。話雖如此,Android 3.0在主應用程序線程(a.k.a.,UI線程)上的工作沒有任何明顯變化。也許你需要[另一本書](http://commonsware.com/Android)... :-) – CommonsWare 2014-08-28 20:34:35

回答

2

Alex Lockwood寫道:

之所以在Android 3.0及以上版本,您的應用程序崩潰,但能正常工作在Android 2 .x是因爲蜂窩和冰淇淋三明治對UI線程的濫用要嚴格得多。

援引從Android Developer site下面的引用:

甲NetworkOnMainThreadException當應用程序試圖在其主線程執行聯網操作被拋出。這隻適用於定位到Honeycomb SDK或更高版本的應用程序。針對早期SDK版本的應用程序允許在其主要事件循環線程上進行聯網,但非常不鼓勵。

2

這意味着大的處理操作不能與主線程(UI)同步運行。

這是一個老版本的Android(如2.2)中不存在的問題,因此,當一個長時間運行的進程啓動時,除非進程結束,否則用戶無法做任何事情。

順便說一句,我同意他們沒有選擇世界上最好的單詞。