BroadcastReceiver.OnReceive(Context, Intent) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
當 BroadcastReceiver 收到 Intent 廣播時,會呼叫這個方法。
[Android.Runtime.Register("onReceive", "(Landroid/content/Context;Landroid/content/Intent;)V", "GetOnReceive_Landroid_content_Context_Landroid_content_Intent_Handler")]
public abstract void OnReceive (Android.Content.Context? context, Android.Content.Intent? intent);
[<Android.Runtime.Register("onReceive", "(Landroid/content/Context;Landroid/content/Intent;)V", "GetOnReceive_Landroid_content_Context_Landroid_content_Intent_Handler")>]
abstract member OnReceive : Android.Content.Context * Android.Content.Intent -> unit
參數
- context
- Context
接收者執行所在的內容。
- intent
- Intent
正在接收的意圖。
- 屬性
備註
當 BroadcastReceiver 收到 Intent 廣播時,會呼叫這個方法。 在此期間,您可以使用 BroadcastReceiver 上的其他方法來檢視/修改目前的結果值。 除非您明確要求使用 在不同的線程上排程此方法,否則這個方法一律會在其進程的主要線程 android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)
內呼叫。 在主線程上執行時,您絕對不應該在主線程上執行長時間執行的作業(系統會在考慮要封鎖接收者並終止候選專案之前,讓系統允許逾時 10 秒)。 您無法在 onReceive() 的實作中啟動快顯對話框。
<b>如果這個 BroadcastReceiver 是透過 a < 啟動receiver>tag,然後物件在從這個函式傳回之後不再運作。</b> 這表示您不應該執行任何以異步方式傳回結果的作業。 如果您需要執行任何後續背景工作,請使用 android.app.job.JobScheduler
排程 android.app.job.JobService
。
如果您要與已執行且先前使用 android.content.Context#bindService(Intent, ServiceConnection, int) bindService()
系結的服務互動,您可以使用 #peekService
。
應用程式指令清單中使用的android.content.Context#registerReceiver
意圖篩選條件不<>保證為<>獨佔。 它們是操作系統關於如何尋找適當收件者的提示。 寄件者可以強制傳遞至特定收件者,略過篩選解析。 基於這個理由, #onReceive(Context, Intent) onReceive()
實作應該只回應已知動作,忽略任何可能收到的非預期意圖。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。