語言

AppOpsManager.SetOnOpNotedCallback 方法

定義

多載

SetOnOpNotedCallback(IExecutor, AppOpsManager+OnOpNotedCallback)

設定一個新的 OnOpNotedCallback。

[Android.Runtime.Register("setOnOpNotedCallback", "(Ljava/util/concurrent/Executor;Landroid/app/AppOpsManager$OnOpNotedCallback;)V", "GetSetOnOpNotedCallback_Ljava_util_concurrent_Executor_Landroid_app_AppOpsManager_OnOpNotedCallback_Handler", ApiSince=30)]
public virtual void SetOnOpNotedCallback(Java.Util.Concurrent.IExecutor? asyncExecutor, Android.App.AppOpsManager.OnOpNotedCallback? callback);
[<Android.Runtime.Register("setOnOpNotedCallback", "(Ljava/util/concurrent/Executor;Landroid/app/AppOpsManager$OnOpNotedCallback;)V", "GetSetOnOpNotedCallback_Ljava_util_concurrent_Executor_Landroid_app_AppOpsManager_OnOpNotedCallback_Handler", ApiSince=30)>]
abstract member SetOnOpNotedCallback : Java.Util.Concurrent.IExecutor * Android.App.AppOpsManager.OnOpNotedCallback -> unit
override this.SetOnOpNotedCallback : Java.Util.Concurrent.IExecutor * Android.App.AppOpsManager.OnOpNotedCallback -> unit

參數

asyncExecutor
IExecutor

執行者:執行者執行 OnOpNotedCallback.onAsyncNoted 開啟,從 null 轉為取消設定。 回調與監聽事件透過此執行器派遣,提供簡便控制使用執行緒的方式。 要透過應用程式的主執行緒派發事件,可以使用 Context.getMainExecutor()。 否則,提供一個執行者,將執行者派遣到適當的執行緒。

callback
AppOpsManager.OnOpNotedCallback

AppOpsManager.OnOpNotedCallback: listener to set, null to unset

屬性

備註

設定一個新的 OnOpNotedCallback。 每個程序只能有一個收集器。 如果目前有另一個回調集,則此方法將失敗。 請注意,如果一個應用程式有多個程序註冊此回調,系統會將非同步操作記錄的回調分散給每個程序,導致同一資料多次傳送到同一應用程式,這通常是不希望看到的。 為了避免這種情況,建議只在一個程序中聆聽非同步運算。 請參考 setOnOpNotedCallback(Executor,OnOpNotedCallback,int) 來了解如何操作。

擲出:IllegalStateException 如果已經註冊了另一個回撥

Android 參考資料。android.app.AppOpsManager.setOnOpNotedCallback

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

SetOnOpNotedCallback(IExecutor, AppOpsManager+OnOpNotedCallback, AppOpsManagerCallbackFlag)

設定一個新的 OnOpNotedCallback。

[Android.Runtime.Register("setOnOpNotedCallback", "(Ljava/util/concurrent/Executor;Landroid/app/AppOpsManager$OnOpNotedCallback;I)V", "GetSetOnOpNotedCallback_Ljava_util_concurrent_Executor_Landroid_app_AppOpsManager_OnOpNotedCallback_IHandler", ApiSince=36)]
public virtual void SetOnOpNotedCallback(Java.Util.Concurrent.IExecutor? asyncExecutor, Android.App.AppOpsManager.OnOpNotedCallback? callback, Android.App.AppOpsManagerCallbackFlag flags);
[<Android.Runtime.Register("setOnOpNotedCallback", "(Ljava/util/concurrent/Executor;Landroid/app/AppOpsManager$OnOpNotedCallback;I)V", "GetSetOnOpNotedCallback_Ljava_util_concurrent_Executor_Landroid_app_AppOpsManager_OnOpNotedCallback_IHandler", ApiSince=36)>]
abstract member SetOnOpNotedCallback : Java.Util.Concurrent.IExecutor * Android.App.AppOpsManager.OnOpNotedCallback * Android.App.AppOpsManagerCallbackFlag -> unit
override this.SetOnOpNotedCallback : Java.Util.Concurrent.IExecutor * Android.App.AppOpsManager.OnOpNotedCallback * Android.App.AppOpsManagerCallbackFlag -> unit

參數

asyncExecutor
IExecutor

執行者:執行者執行 OnOpNotedCallback.onAsyncNoted 開啟,從 null 轉為取消設定。 回調與監聽事件透過此執行器派遣,提供簡便控制使用執行緒的方式。 要透過應用程式的主執行緒派發事件,可以使用 Context.getMainExecutor()。 否則,提供一個執行者,將執行者派遣到適當的執行緒。

callback
AppOpsManager.OnOpNotedCallback

AppOpsManager.OnOpNotedCallback: listener to set, null to unset

flags
AppOpsManagerCallbackFlag

int:額外標記以修改回調行為,例如OP_NOTED_CALLBACK_FLAG_IGNORE_ASYNC值為0或OP_NOTED_CALLBACK_FLAG_IGNORE_ASYNC

屬性

備註

設定一個新的 OnOpNotedCallback。 每個程序只能有一個收集器。 如果目前有另一個回調集,則此方法將失敗。 此 API 允許呼叫者只監聽同步與自作記錄事件,忽略非同步操作。 這在應用程式擁有多個程序的情況下非常有用。 舉例來說,一個應用程式有兩個流程,A 和 B。原 op 記錄事件如下:op 1:程序 A,同步操作 2:程序 A,非同步操作 3:程序 B,同步 操作 4:程序 B,非同步。任何監聽非同步操作記錄事件的程序,會收到來自所有程序的事件(此例中的操作 2 和 操作 4)。 所以如果 A 和 B 兩個程序都註冊為監聽者,兩個都會得到 OP 2 和 4,這並不理想。 為避免重複,兩個程序中的一個應該設定OP_NOTED_CALLBACK_FLAG_IGNORE_ASYNC。 例如程序 A 設定 OP_NOTED_CALLBACK_FLAG_IGNORE_ASYNC,然後只會觸發自己的同步事件(操作 1)。 另一個流程則會聽取各種事件,並取得 OP 2、3 和 4。 請注意,即使有 OP_NOTED_CALLBACK_FLAG_IGNORE_ASYNC,OnOpNotedCallback.onAsyncNoted 仍可能被調用。 這種情況發生在回撥註冊前收集的同步事件。

擲出:IllegalStateException 如果已經註冊了另一個回撥

Android 參考資料。android.app.AppOpsManager.setOnOpNotedCallback

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於