SubmissionPublisher.Offer 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Offer(Object, IBiPredicate) |
若可能,透過非同步調用該 |
| Offer(Object, Int64, TimeUnit, IBiPredicate) |
如果可能,透過非同步呼叫該 |
Offer(Object, IBiPredicate)
若可能,透過非同步調用該 Flow.Subscriber#onNext(Object) onNext 方法,將該項目發佈給每位現有訂閱者。
[Android.Runtime.Register("offer", "(Ljava/lang/Object;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_Ljava_util_function_BiPredicate_Handler", ApiSince=33)]
public virtual int Offer(Java.Lang.Object? item, Java.Util.Functions.IBiPredicate? onDrop);
[<Android.Runtime.Register("offer", "(Ljava/lang/Object;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_Ljava_util_function_BiPredicate_Handler", ApiSince=33)>]
abstract member Offer : Java.Lang.Object * Java.Util.Functions.IBiPredicate -> int
override this.Offer : Java.Lang.Object * Java.Util.Functions.IBiPredicate -> int
參數
- item
- Object
要發佈的(非空)項目
- onDrop
- IBiPredicate
若非空,處理器會在 drop 時呼叫訂閱者,並包含訂閱者與項目的參數;若回傳為真,則會重新嘗試(一次)
傳回
若為負數,則為(負數)滴數;否則,則為最大滯後的估計值
- 屬性
備註
若可能,透過非同步調用該 Flow.Subscriber#onNext(Object) onNext 方法,將該項目發佈給每位現有訂閱者。 若資源限制超過,該項目可能會被一位或多位訂閱者丟棄,若非空,則會呼叫該處理程序,若回傳為真,則重試一次。 在呼叫處理器時,其他執行緒對此類別中方法的呼叫會被阻擋。 除非能保證恢復,否則選項通常僅限於記錄錯誤和/或向用戶發出 Flow.Subscriber#onError(Throwable) onError 訊號。
此方法回傳狀態指示器:若為負,代表掉落次數(失敗嘗試向訂閱者發放該項目)。 否則,這是所有現有訂閱者最大延遲(已提交但尚未消費的項目數量)的估計值。 如果有訂閱者,這個值至少是一(考慮本已提交項目),否則為零。
如果該發佈者的執行者在嘗試非同步通知訂閱者時拋出 RejectedExecutionException(或其他任何 RuntimeException 或錯誤),或丟棄處理程序在處理遺失項目時拋出異常,則該例外會被重新拋出。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
Offer(Object, Int64, TimeUnit, IBiPredicate)
如果可能,透過非同步呼叫該 Flow.Subscriber#onNext(Object) onNext 方法,將指定項目發佈給每個當前訂閱者,當任何訂閱的資源無法使用時,阻塞至指定的逾時或呼叫執行緒被中斷,屆時呼叫該處理程序(若非空)會被呼叫,若回傳為真,則重新嘗試一次。
[Android.Runtime.Register("offer", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Ljava_util_function_BiPredicate_Handler", ApiSince=33)]
public virtual int Offer(Java.Lang.Object? item, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Util.Functions.IBiPredicate? onDrop);
[<Android.Runtime.Register("offer", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Ljava_util_function_BiPredicate_Handler", ApiSince=33)>]
abstract member Offer : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit * Java.Util.Functions.IBiPredicate -> int
override this.Offer : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit * Java.Util.Functions.IBiPredicate -> int
參數
- item
- Object
要發佈的(非空)項目
- timeout
- Int64
任何訂閱者等待資源多久才會放棄,單位為 unit
- unit
- TimeUnit
TimeUnit A 如何詮釋參數timeout
- onDrop
- IBiPredicate
若非空,處理器會在 drop 時呼叫訂閱者,並包含訂閱者與項目的參數;若回傳為真,則會重新嘗試(一次)
傳回
若為負數,則為(負數)滴數;否則,則為最大滯後的估計值
- 屬性
備註
如果可能,透過非同步呼叫該 Flow.Subscriber#onNext(Object) onNext 方法,將指定項目發佈給每個當前訂閱者,當任何訂閱的資源無法使用時,阻塞至指定的逾時或呼叫執行緒被中斷,屆時呼叫該處理程序(若非空)會被呼叫,若回傳為真,則重新嘗試一次。 (丟棄處理程序可透過檢查當前執行緒是否中斷來區分逾時與中斷。)在呼叫處理器時,其他執行緒對此類別中方法的呼叫會被阻擋。 除非能保證恢復,否則選項通常僅限於記錄錯誤和/或向用戶發出 Flow.Subscriber#onError(Throwable) onError 訊號。
此方法回傳狀態指示器:若為負,代表掉落次數(失敗嘗試向訂閱者發放該項目)。 否則,這是所有現有訂閱者最大延遲(已提交但尚未消費的項目數量)的估計值。 如果有訂閱者,這個值至少是一(考慮本已提交項目),否則為零。
如果該發佈者的執行者在嘗試非同步通知訂閱者時拋出 RejectedExecutionException(或其他任何 RuntimeException 或錯誤),或丟棄處理程序在處理遺失項目時拋出異常,則該例外會被重新拋出。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。