主線程的理解

遇到問題:就在博主弄那個天氣預報的APP時,想要HttpClient等通過網絡獲取網絡數據再顯示回界面的時候,程序報錯了,說是我的主線程出錯。

通常的解決方案都是將耗時操作到子線程中去,然後通過handle去調回到主線程中去。

所以,我就去了解一下關於主線程的問題。

1.主線程的作用

在單線程的情況下,android會把所有的操作都放在主線程中去操作。

主線程 既要處理Activity組件的UI事件,又要處理Service後臺服務工作,通常會忙不過來。爲了解決此問題,主線程可以創建多個子線程來處理後臺服務工作,而本身專心處理UI畫面的事件。

主線程的主要責任:

       • 快速處理UI事件。而且只有它才處理UI事件, 其它線程還不能存取UI畫面上的對象(如TextView等),此時, 主線程就叫做UI線程。基本上,Android希望UI線程能根據用戶的要求做出快速響應,如果UI線程花太多時間處理後臺的工作,當UI事件發生時,讓用戶等待時間超過5秒而未處理,Android系統就會給用戶顯示ANR提示信息。

         只有UI線程才能執行View派生類的onDraw()函數。

      • 快速處理Broadcast消息。【主線程】除了處理UI事件之外,還要處理Broadcast消息。所以在BroadcastReceiver的onReceive()函數中,不宜佔用太長的時間,否則導致【主線程】無法處理其它的Broadcast消息或UI事件。如果佔用時間超過10秒, Android系統就會給用戶顯示ANR提示信息。


發佈了23 篇原創文章 · 獲贊 23 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章