2016-07-27 40 views
1

我有一個關於廣播接收器和主線程處理它的問題。主線程處理廣播接收器的概念是什麼

如果主線程正在做一些計算(或者你可以說在構造函數或方法下執行代碼)並且廣播接收器onReceive()被觸發?哪個任務將被拾取

  1. 構造函數/方法將完成它的執行,然後調用onReceive。 (這是我的理解是什麼)

  2. 的onReceive將被觸發第一

+0

我相信你的理解是正確的。 – Shaishav

+0

這意味着,如果計算時間太長,onReceive將受到影響。我沒有任何閱讀的證據。或MainThread優先執行該任務。 – Aada

回答

0

構造函數/方法將完成它的執行,然後的onReceive被稱爲應該是答案,因爲BroadcastReceivers總是呼籲主線程。

void onReceive(Context context, Intent intent)。

當BroadcastReceiver收到一個 Intent廣播時調用此方法。在此期間,您可以使用 BroadcastReceiver上的其他方法查看/修改當前結果值。這個 方法總是在其進程的主線程中調用,除非您明確要求使用registerReceiver(BroadcastReceiver,IntentFilter,String, android.os.Handler)在不同線程 上調度 。

More details here.

0

你是對的....

1)第一主線程的執行將僅完成任何未決的任務將被執行。

2)如果主線程花費太長時間來完成其任務,它會簡單地給一個exception是這樣的:

應用「AndroidThreadDemo」沒有響應。

欲瞭解更多信息,請參閱this link ..我相信它會幫助你。