BroadcastReceiver.OnReceive(Context, Intent) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
This method is called when the BroadcastReceiver is receiving an Intent broadcast.
[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
Parameters
- context
- Context
The Context in which the receiver is running.
- intent
- Intent
The Intent being received.
- Attributes
Remarks
This method is called when the BroadcastReceiver is receiving an Intent broadcast. During this time you can use the other methods on BroadcastReceiver to view/modify the current result values. This method is always called within the main thread of its process, unless you explicitly asked for it to be scheduled on a different thread using android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)
. When it runs on the main thread you should never perform long-running operations in it (there is a timeout of 10 seconds that the system allows before considering the receiver to be blocked and a candidate to be killed). You cannot launch a popup dialog in your implementation of onReceive().
<b>If this BroadcastReceiver was launched through a <receiver> tag, then the object is no longer alive after returning from this function.</b> This means you should not perform any operations that return a result to you asynchronously. If you need to perform any follow up background work, schedule a android.app.job.JobService
with android.app.job.JobScheduler
.
If you wish to interact with a service that is already running and previously bound using android.content.Context#bindService(Intent, ServiceConnection, int) bindService()
, you can use #peekService
.
The Intent filters used in android.content.Context#registerReceiver
and in application manifests are <em>not</em> guaranteed to be exclusive. They are hints to the operating system about how to find suitable recipients. It is possible for senders to force delivery to specific recipients, bypassing filter resolution. For this reason, #onReceive(Context, Intent) onReceive()
implementations should respond only to known actions, ignoring any unexpected Intents that they may receive.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.