OnDevicePersonalizationManager
public
class
OnDevicePersonalizationManager
extends Object
java.lang.Object | |
↳ | android.adservices.ondevicepersonalization.OnDevicePersonalizationManager |
OnDevicePersonalizationManager 提供 API,讓應用程式在獨立程序中載入 IsolatedService
並與其互動。應用程式可以要求 IsolatedService
,以便在應用程式檢視畫面階層中的 SurfaceView
中產生內容,並將持續性結果寫入裝置端儲存空間,供聯合數據分析進行跨裝置統計分析,或供聯合學習進行模型訓練。叫用應用程式無法直接存取顯示的內容和持續性輸出內容。
摘要
公用方法 | |
---|---|
void
|
execute(ComponentName handler, PersistableBundle params, Executor executor, OutcomeReceiver<List<SurfacePackageToken>, Exception> receiver)
在 OnDevicePersonalization 沙箱中執行 |
void
|
requestSurfacePackage(SurfacePackageToken surfacePackageToken, IBinder surfaceViewHostToken, int displayId, int width, int height, Executor executor, OutcomeReceiver<SurfaceControlViewHost.SurfacePackage, Exception> receiver)
要求將 |
繼承方法 | |
---|---|
公用方法
執行
public void execute (ComponentName handler, PersistableBundle params, Executor executor, OutcomeReceiver<List<SurfacePackageToken>, Exception> receiver)
在 OnDevicePersonalization 沙箱中執行 IsolatedService
。平台會在隔離程序中繫結至指定的 IsolatedService
,並使用呼叫端提供的參數呼叫 IsolatedWorker#onExecute(ExecuteInput, java.util.function.Consumer)
。IsolatedService
執行完畢後,平台會將符記傳回給呼叫端,這些符記會參照服務的結果。這些權杖之後可用於在呼叫應用程式的 SurfaceView
中顯示結果。
參數 | |
---|---|
handler |
ComponentName :IsolatedService 的 ComponentName 。此值不能為 null 。 |
params |
PersistableBundle :從呼叫應用程式傳遞至 IsolatedService 的 PersistableBundle 。IsolatedService 會定義此參數的預期內容。平台不會解讀這項參數。此值不能為 null 。 |
executor |
Executor :叫用回呼的 Executor 。此值不能為 null 。回呼和事件監聽器會透過這個 Executor 分派,讓您輕鬆控制使用哪一個執行緒。如要透過應用程式的主要執行緒分派事件,可以使用 Context.getMainExecutor() 。否則,請提供 Executor ,將工作調度至適當的執行緒。 |
receiver |
OutcomeReceiver :此方法會傳回 SurfacePackageToken 物件清單,每個物件都是對 IsolatedService 傳回的 RenderingConfig 的不明確參照,或失敗時的 Exception 。您可以在後續 requestSurfacePackage(android.adservices.ondevicepersonalization.SurfacePackageToken, android.os.IBinder, int, int, int, java.util.concurrent.Executor, android.os.OutcomeReceiver) 呼叫中使用傳回的 SurfacePackageToken 物件,在檢視畫面中顯示結果。呼叫應用程式和 IsolatedService 必須同意這個清單的預期大小。在傳回的 SurfacePackageToken 物件清單中,項目可能為空值,表示服務沒有該特定介面的輸出內容。如果發生錯誤,接收器會傳回下列其中一個例外狀況:如果未安裝處理常式套件或沒有有效的 ODP 資訊清單,則會傳回 PackageManager.NameNotFoundException 。如果找不到處理常式類別,就會傳回 ClassNotFoundException 。如果處理常式執行失敗,則會傳回 OnDevicePersonalizationException 。 |
requestSurfacePackage
public void requestSurfacePackage (SurfacePackageToken surfacePackageToken, IBinder surfaceViewHostToken, int displayId, int width, int height, Executor executor, OutcomeReceiver<SurfaceControlViewHost.SurfacePackage, Exception> receiver)
要求將 SurfaceControlViewHost.SurfacePackage
插入呼叫應用程式中的 SurfaceView
。表面包裝函式會包含 View
,其中包含先前呼叫 #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver)
的結果內容,該內容會在 OnDevicePersonalization 沙箱中執行。
參數 | |
---|---|
surfacePackageToken |
SurfacePackageToken :對 #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver) 先前呼叫傳回的 SurfacePackageToken 參照。此值不能為 null 。 |
surfaceViewHostToken |
IBinder :SurfaceView 的 hostToken,這是在 SurfaceView 新增至檢視畫面階層後,由 SurfaceView.getHostToken() 傳回。此值不能為 null 。 |
displayId |
int :用於顯示 SurfaceControlViewHost.SurfacePackage 的邏輯顯示畫面整數 ID,由 Context.getDisplay().getDisplayId() 傳回。 |
width |
int :SurfaceControlViewHost.SurfacePackage 的寬度 (以像素為單位)。 |
height |
int :SurfaceControlViewHost.SurfacePackage 的高度,以像素為單位。 |
executor |
Executor :叫用回呼的 Executor
此值不能為 null 。回呼和事件監聽器會透過這個 Executor 分派,讓您輕鬆控制使用哪一個執行緒。如要透過應用程式的主要執行緒進行事件分派,可以使用 Context.getMainExecutor() 。否則,請提供 Executor ,將工作調度至適當的執行緒。 |
receiver |
OutcomeReceiver :成功時會傳回 SurfaceControlViewHost.SurfacePackage ,失敗時則會傳回 Exception 。如果處理常式執行失敗,例外狀況類型為 OnDevicePersonalizationException 。此值不能為 null 。 |