BroadcastReceiver.OnReceive(Context, Intent) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Этот метод вызывается, когда широковещательный объект BroadcastReceiver получает широковещательный канал "Намерение".
[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 получает широковещательный канал "Намерение". В течение этого времени вы можете использовать другие методы в BroadcastReceiver для просмотра и изменения текущих значений результатов. Этот метод всегда вызывается в основном потоке его процесса, если вы явно не попросили его запланировать в другом потоке с помощью android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)
. Когда он выполняется в основном потоке, в нем никогда не следует выполнять длительные операции (время ожидания составляет 10 секунд, которое система разрешает, прежде чем рассматривать приемник, который будет заблокирован, и кандидат, который будет убит). Вы не можете запустить всплывающее диалоговое окно в реализации onReceive().
<b>, если этот широковещательныйreceiver был запущен через < приемник> Тег, а затем объект больше не жив после возвращения из этой функции.</b> Это означает, что не следует выполнять никаких операций, возвращающих результат асинхронно. Если вам нужно выполнить все последующие фоновые действия, запланируйте егоandroid.app.job.JobService
.android.app.job.JobScheduler
Если вы хотите взаимодействовать со службой, которая уже запущена и ранее привязана с помощью android.content.Context#bindService(Intent, ServiceConnection, int) bindService()
, можно использовать #peekService
.
Фильтры намерений, используемые в android.content.Context#registerReceiver
манифестах <>приложений, не< /em>, являются эксклюзивными. Они намеки на операционную систему о том, как найти подходящих получателей. Для отправителей можно принудительно отправлять определенным получателям, обходя разрешение фильтра. По этой причине #onReceive(Context, Intent) onReceive()
реализации должны реагировать только на известные действия, игнорируя любые непредвиденные намерения, которые они могут получать.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.