導航:首頁 > 操作系統 > android更新主線程

android更新主線程

發布時間:2024-09-03 06:55:03

android 怎麼執行主線程

可以。你這個問題是,android 能不能在 非主activity的 類B中,調用activity A的方法。
在B做一個activity的 變數。在B構造函數中 對context參數 保存,記得要對context 強制轉換類型 變為主線程的 activity。之後在B中就能靠activity變數調用 A的方法。
不過你這個是多線程,要用synchronize做好共享數據保護工作。

② 為什麼說Android主線程是線程不安全的,既然不安全為什麼要在主線程中更新UI,有點暈 求大師解答

UI線程及Android的單線程模型原則當應用啟動,系統會創建一個主線程(main thread)。這個主線程負責向UI組件分發事件(包括繪制事件),也是在這個主線程里,應用和Android的UI組件(components from the Android UI toolkit (components from the android.widget and android.view packages))發生交互。

當App做一些比較重(intensive)的工作的時候,除非合理地實現,否則單線程模型的performance會很poor。特別的是,如果所有的工作都在UI線程,做一些比較耗時的工作比如訪問網路或者資料庫查詢,都會阻塞UI線程,導致事件停止分發(包括繪制事件)。對於用戶來說,應用看起來像是卡住了,更壞的情況是,如果UI線程blocked的時間太長(大約超過5秒),用戶就會看到ANR(application not responding)的對話框。

另外,Andoid UI toolkit並不是線程安全的,所以不能從非UI線程來操縱UI組件。必須把所有的UI操作放在UI線程里,所以Android的單線程模型有兩條原則:
1.不要阻塞UI線程。
2.不要在UI線程之外訪問Android UI toolkit(主要是這兩個包中的組件:android.widget and android.view)。

③ android 更新ui是在主線程還是子線程

在一個Android 程序開始運行的時候,會單獨啟動一個Process。默認的情況下,所有這個程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的兩種,除此之外還有Content Provider和Broadcast Receiver)都會跑在這個Process。 一個Android 程序默認情況下也只有一個Process,但一個Process下卻可以有許多個Thread。在這么多Thread當中,有一個Thread,我們稱之為UI Thread。UI Thread在Android程序運行的時候就被創建,是一個Process當中的主線程Main Thread,主要是負責控制UI界面的顯示、更新和控制項交互。在Android程序創建之初,一個Process呈現的是單線程模型,所有的任務都在一個線程中運行。因此,我們認為,UI Thread所執行的每一個函數,所花費的時間都應該是越短越好。而其他比較費時的工作(訪問網路,下載數據,查詢資料庫等),都應該交由子線程去執行,以免阻塞主線程。 那麼,UI Thread如何和其他Thread一起工作呢?常用方法是: 誕生一個主線程的Handler物件,當做Listener去讓子線程能將訊息Push到主線程的Message Quene里,以便觸發主線程的handlerMessage()函數,讓主線程知道子線程的狀態,並在主線程更新UI。

閱讀全文

與android更新主線程相關的資料

熱點內容
深入理解nginx源碼 瀏覽:951
串口發送命令 瀏覽:842
程序員每天上班很累 瀏覽:279
javasetlayout 瀏覽:91
空調壓縮機用多大的壓力 瀏覽:993
python爬蟲視頻教程下載 瀏覽:237
php53以上 瀏覽:810
iphone手機怎麼用安卓應用 瀏覽:492
本地文件如何傳到華為雲伺服器 瀏覽:383
加密ic卡在電腦怎麼復制 瀏覽:522
鄞州繁裕三村附近啟蒙編程學校 瀏覽:555
單片機里code什麼意思 瀏覽:182
linux修改umask 瀏覽:536
編程鎖的發展 瀏覽:346
唯詞app怎麼改密碼 瀏覽:72
魔獸世界表情命令 瀏覽:985
智能還款信用卡源碼 瀏覽:554
zoo文件夾 瀏覽:762
安卓2k21如何下載 瀏覽:648
某年某月的天數python 瀏覽:913