OnDevicePersonalizationManager

public class OnDevicePersonalizationManager
extends Object

java.lang.Object
android.adservices.ondevicepersonalization.OnDevicePersonalizationManager


OnDevicePersonalizationManager stellt APIs für Apps bereit, mit denen eine IsolatedService in einem isolierten Prozess geladen und damit interagiert werden kann. Eine App kann eine IsolatedService anfordern, um Inhalte für die Anzeige in einem SurfaceView innerhalb der Ansichtshierarchie der App zu generieren. Außerdem können dauerhafte Ergebnisse im Gerätespeicher geschrieben werden, die von Federated Analytics für die geräteübergreifende statistische Analyse oder von Federated Learning für die Modellschulung verwendet werden können. Sowohl auf die angezeigten Inhalte als auch auf die persistente Ausgabe kann nicht direkt über die aufrufende App zugegriffen werden.

Zusammenfassung

Öffentliche Methoden

void execute(ComponentName handler, PersistableBundle params, Executor executor, OutcomeReceiver<List<SurfacePackageToken>, Exception> receiver)

Führt eine IsolatedService in der OnDevicePersonalization-Sandbox aus.

void requestSurfacePackage(SurfacePackageToken surfacePackageToken, IBinder surfaceViewHostToken, int displayId, int width, int height, Executor executor, OutcomeReceiver<SurfaceControlViewHost.SurfacePackageException> receiver)

Es wird angefordert, dass eine SurfaceControlViewHost.SurfacePackage in eine SurfaceView in der anrufenden App eingefügt wird.

Übernommene Methoden

Öffentliche Methoden

execute

public void execute (ComponentName handler, 
                PersistableBundle params, 
                Executor executor, 
                OutcomeReceiver<List<SurfacePackageToken>, Exception> receiver)

Führt eine IsolatedService in der OnDevicePersonalization-Sandbox aus. Die Plattform bindet in einem isolierten Prozess an die angegebene IsolatedService und ruft IsolatedWorker#onExecute(ExecuteInput, java.util.function.Consumer) mit den vom Aufrufer bereitgestellten Parametern auf. Wenn die Ausführung von IsolatedService abgeschlossen ist, gibt die Plattform dem Aufrufer Tokens zurück, die sich auf die Ergebnisse aus dem Dienst beziehen. Diese Tokens können anschließend verwendet werden, um Ergebnisse in einem SurfaceView in der anrufenden App anzuzeigen.

Parameter
handler ComponentName: Die ComponentName von IsolatedService. Dieser Wert darf nicht null sein.

params PersistableBundle: Ein PersistableBundle, das von der anrufenden App an die IsolatedService übergeben wird. Der erwartete Inhalt dieses Parameters wird durch dieIsolatedService definiert. Dieser Parameter wird von der Plattform nicht interpretiert. Dieser Wert darf nicht null sein.

executor Executor: die Executor, über die der Callback aufgerufen werden soll. Dieser Wert darf nicht null sein. Callback- und Listener-Ereignisse werden über diese Executor gesendet, was eine einfache Möglichkeit bietet, zu steuern, welcher Thread verwendet wird. Wenn Sie Ereignisse über den Hauptthread Ihrer Anwendung senden möchten, können Sie Context.getMainExecutor() verwenden. Andernfalls geben Sie eine Executor an, die an einen geeigneten Thread weitergeleitet wird.

receiver OutcomeReceiver: Gibt eine Liste von SurfacePackageToken-Objekten zurück, von denen jedes ein intransparenter Verweis auf eine RenderingConfig ist, die von einem IsolatedService zurückgegeben wird, oder ein Exception bei einem Fehler. Die zurückgegebenen SurfacePackageToken-Objekte können in einem nachfolgenden requestSurfacePackage(android.adservices.ondevicepersonalization.SurfacePackageToken, android.os.IBinder, int, int, int, java.util.concurrent.Executor, android.os.OutcomeReceiver)-Aufruf verwendet werden, um das Ergebnis in einer Ansicht anzuzeigen. Die anrufende App und die IsolatedService müssen sich über die erwartete Größe dieser Liste einigen. Ein Eintrag in der zurückgegebenen Liste der SurfacePackageToken-Objekte kann null sein, um anzuzeigen, dass der Dienst keine Ausgabe für diese bestimmte Oberfläche hat. Bei einem Fehler gibt der Empfänger eine der folgenden Ausnahmen zurück: Es wird ein PackageManager.NameNotFoundException zurückgegeben, wenn das Handler-Paket nicht installiert ist oder kein gültiges ODP-Manifest hat. Gibt ClassNotFoundException zurück, wenn die Handler-Klasse nicht gefunden wird. Gibt OnDevicePersonalizationException zurück, wenn die Ausführung des Handlers fehlschlägt.

requestSurfacePackage

public void requestSurfacePackage (SurfacePackageToken surfacePackageToken, 
                IBinder surfaceViewHostToken, 
                int displayId, 
                int width, 
                int height, 
                Executor executor, 
                OutcomeReceiver<SurfaceControlViewHost.SurfacePackageException> receiver)

Fordert an, dass ein SurfaceControlViewHost.SurfacePackage in eine SurfaceView in der aufrufenden App eingefügt wird. Das Oberflächenpaket enthält ein View mit dem Inhalt aus einem vorherigen Aufruf von #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver), der in der OnDevicePersonalization-Sandbox ausgeführt wurde.

Parameter
surfacePackageToken SurfacePackageToken: ein Verweis auf eine SurfacePackageToken, die von einem vorherigen Aufruf an #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver) zurückgegeben wurde. Dieser Wert darf nicht null sein.

surfaceViewHostToken IBinder: Das Host-Token des SurfaceView, das von SurfaceView.getHostToken() zurückgegeben wird, nachdem der SurfaceView der Ansichtshierarchie hinzugefügt wurde. Dieser Wert darf nicht null sein.

displayId int: Die Ganzzahl-ID des logischen Displays, auf dem das SurfaceControlViewHost.SurfacePackage angezeigt werden soll, das von Context.getDisplay().getDisplayId() zurückgegeben wird.

width int: die Breite des SurfaceControlViewHost.SurfacePackage in Pixeln.

height int: die Höhe des SurfaceControlViewHost.SurfacePackage in Pixeln.

executor Executor: die Executor, für die der Rückruf aufgerufen werden soll. Dieser Wert darf nicht null sein. Callback- und Listener-Ereignisse werden über diesen Executor gesendet. So lässt sich auf einfache Weise steuern, welcher Thread verwendet wird. Wenn Sie Ereignisse über den Hauptthread Ihrer Anwendung auslösen möchten, können Sie Context.getMainExecutor() verwenden. Andernfalls geben Sie eine Executor an, die an einen geeigneten Thread weitergeleitet wird.

receiver OutcomeReceiver: Hier wird bei Erfolg SurfaceControlViewHost.SurfacePackage oder bei Fehler Exception zurückgegeben. Der Ausnahmetyp ist OnDevicePersonalizationException, wenn die Ausführung des Handlers fehlschlägt. Dieser Wert darf nicht null sein.