IsolatedWorker

public interface IsolatedWorker

android.adservices.ondevicepersonalization.IsolatedWorker


如要處理 OS 對 IsolatedService 的要求,就需要實作這個介面提供的方法。IsolatedService 會在每個要求上建立 IsolatedWorker 的例項,並根據要求類型呼叫下列其中一個方法。IsolatedService 會在 Binder 執行緒上呼叫方法,而 IsolatedWorker 應將長期執行作業卸載至背景工作執行緒。每個方法的消費者參數會用來傳回結果。

摘要

公用方法

default void onDownloadCompleted(DownloadCompletedInput input, Consumer<DownloadCompletedOutput> consumer)

處理已完成的下載作業。

default void onEvent(EventInput input, Consumer<EventOutput> consumer)

處理由對平台提供的追蹤網址 EventUrlProvider 的請求所觸發的事件,該網址已嵌入 onRender(android.adservices.ondevicepersonalization.RenderInput, java.util.function.Consumer) 傳回的 HTML 輸出內容中。

default void onExecute(ExecuteInput input, Consumer<ExecuteOutput> consumer)

處理來自應用程式的要求。

default void onRender(RenderInput input, Consumer<RenderOutput> consumer)

針對 onExecute(android.adservices.ondevicepersonalization.ExecuteInput, java.util.function.Consumer) 傳回的結果產生 HTML。

default void onTrainingExample(TrainingExampleInput input, Consumer<TrainingExampleOutput> consumer)

產生用於聯合運算工作的單一訓練範例。

公用方法

onDownloadCompleted

public void onDownloadCompleted (DownloadCompletedInput input, 
                Consumer<DownloadCompletedOutput> consumer)

處理已完成的下載作業。平台會使用 IsolatedService 套件資訊清單中定義的參數下載內容,在下載完成後呼叫此函式,並使用此方法的結果更新 IsolatedService#getRemoteData(RequestToken) 中的 REMOTE_DATA 資料表。

參數
input DownloadCompletedInput:下載處理常式參數。此值不能為 null

consumer Consumer:接收結果的回呼。應在發生錯誤時搭配 null 呼叫。如果使用 null 呼叫,REMOTE_DATA 資料表不會有任何更新。

如果這個方法擲回 RuntimeException,系統就不會更新 REMOTE_DATA 資料表。

onEvent

public void onEvent (EventInput input, 
                Consumer<EventOutput> consumer)

處理由平台提供的追蹤網址 EventUrlProvider 要求觸發的事件,這類網址嵌入 onRender(android.adservices.ondevicepersonalization.RenderInput, java.util.function.Consumer) 傳回的 HTML 輸出內容。平台會使用 EventOutput#getEventLogRecord() 更新 EVENTS 資料表。

參數
input EventInput:計算事件資料所需的參數。此值不能為 null

consumer Consumer:接收結果的回呼。應在發生錯誤時搭配 null 呼叫。如果使用 null 呼叫,系統不會將任何資料寫入 EVENTS 資料表。

如果這個方法擲回 RuntimeException,就不會將任何資料寫入 EVENTS 資料表。

onExecute

public void onExecute (ExecuteInput input, 
                Consumer<ExecuteOutput> consumer)

處理來自應用程式的要求。當應用程式呼叫參照已命名 IsolatedServiceOnDevicePersonalizationManager#execute(ComponentName, PersistableBundle, java.util.concurrent.Executor, OutcomeReceiver) 時,系統會呼叫此方法。

參數
input ExecuteInput:從呼叫應用程式要求參數。此值不能為 null

consumer Consumer:接收結果 ExecuteOutput 的回呼。發生錯誤時,應使用 null 呼叫此方法。系統會將錯誤傳遞至呼叫應用程式,並以 OnDevicePersonalizationException 和錯誤代碼 OnDevicePersonalizationException.ERROR_ISOLATED_SERVICE_FAILED 傳遞。為避免將私人資料洩漏給呼叫應用程式,系統不會提供更詳細的錯誤回報。如果 IsolatedService 需要向後端回報錯誤統計資料,應將記錄的錯誤資料填入 ExecuteOutput,並仰賴聯合 Analytics 匯總錯誤報表。

如果這個方法擲回 RuntimeException,也會向呼叫應用程式回報為 OnDevicePersonalizationException,並附上錯誤代碼 OnDevicePersonalizationException.ERROR_ISOLATED_SERVICE_FAILED

onRender

public void onRender (RenderInput input, 
                Consumer<RenderOutput> consumer)

針對 onExecute(android.adservices.ondevicepersonalization.ExecuteInput, java.util.function.Consumer) 傳回的結果產生 HTML。當用戶端應用程式呼叫 OnDevicePersonalizationManager#requestSurfacePackage(SurfacePackageToken, IBinder, int, int, int, java.util.concurrent.Executor, OutcomeReceiver) 時呼叫。平台會在受限框架內的 WebView 中轉譯此 HTML。

參數
input RenderInput:轉譯要求的參數。此值不能為 null

consumer Consumer:接收結果的回呼。發生錯誤時應使用 null 呼叫。系統會將錯誤傳遞至呼叫應用程式,並以 OnDevicePersonalizationException 和錯誤代碼 OnDevicePersonalizationException.ERROR_ISOLATED_SERVICE_FAILED 傳遞。

如果這個方法擲回 RuntimeException,也會回報為呼叫應用程式的 OnDevicePersonalizationException,並顯示錯誤代碼 OnDevicePersonalizationException.ERROR_ISOLATED_SERVICE_FAILED

onTrainingExample

public void onTrainingExample (TrainingExampleInput input, 
                Consumer<TrainingExampleOutput> consumer)

產生用於聯合運算工作的單一訓練範例。

參數
input TrainingExampleInput:產生訓練範例所需的參數。此值不能為 null

consumer Consumer:完成時叫用的回呼。此值不能為 null