OnDevicePersonalizationManager

public class OnDevicePersonalizationManager
extends Object

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


OnDevicePersonalizationManager는 앱이 격리된 프로세스에서 IsolatedService를 로드하여 상호작용할 수 있는 API를 제공합니다. 앱은 IsolatedService를 요청하여 앱의 뷰 계층 구조 내 SurfaceView 내에 표시할 콘텐츠를 생성하고 영구 결과를 기기 내 저장소에 기록할 수 있습니다. 이 결과는 교차 기기 통계 분석을 위한 제휴 애널리틱스 또는 모델 학습을 위한 Federated Learning에서 사용할 수 있습니다. 표시된 콘텐츠와 영구 출력 모두 호출 앱에서 직접 액세스할 수 없습니다.

요약

공개 메서드

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

OnDevicePersonalization 샌드박스에서 IsolatedService를 실행합니다.

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

호출 앱 내 SurfaceViewSurfaceControlViewHost.SurfacePackage가 삽입되도록 요청합니다.

상속된 메서드

공개 메서드

실행

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: IsolatedServiceComponentName입니다. 이 값은 null일 수 없습니다.

params PersistableBundle: 호출 앱에서 IsolatedService로 전달되는 PersistableBundle입니다. 이 매개변수의 예상 콘텐츠는 IsolatedService에서 정의합니다. 플랫폼은 이 매개변수를 해석하지 않습니다. 이 값은 null일 수 없습니다.

executor Executor: 콜백을 호출할 Executor입니다. 이 값은 null일 수 없습니다. 콜백 및 리스너 이벤트는 이 Executor를 통해 전달되므로 사용되는 스레드를 쉽게 제어할 수 있습니다. 애플리케이션의 기본 스레드를 통해 이벤트를 전달하려면 Context.getMainExecutor()를 사용하면 됩니다. 그 외의 경우에는 적절한 스레드에 전달되는 Executor를 제공합니다.

receiver OutcomeReceiver: SurfacePackageToken 객체의 목록을 반환합니다. 각 객체는 IsolatedService에서 반환된 RenderingConfig의 불투명 참조 또는 실패 시 Exception입니다. 반환된 SurfacePackageToken 객체를 후속 requestSurfacePackage(android.adservices.ondevicepersonalization.SurfacePackageToken, android.os.IBinder, int, int, int, java.util.concurrent.Executor, android.os.OutcomeReceiver) 호출에서 사용하여 뷰에 결과를 표시할 수 있습니다. 호출 앱과 IsolatedService은 이 목록의 예상 크기에 동의해야 합니다. SurfacePackageToken 객체의 반환된 목록에 있는 항목은 null일 수 있으며, 이는 서비스에 특정 노출 영역에 관한 출력이 없음을 나타냅니다. 오류가 발생하면 수신기는 다음 예외 중 하나를 반환합니다. 핸들러 패키지가 설치되지 않았거나 유효한 ODP 매니페스트가 없으면 PackageManager.NameNotFoundException를 반환합니다. 핸들러 클래스를 찾을 수 없으면 ClassNotFoundException를 반환합니다. 핸들러 실행이 실패하면 OnDevicePersonalizationException를 반환합니다.

requestSurfacePackage

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

호출 앱 내의 SurfaceViewSurfaceControlViewHost.SurfacePackage를 삽입하도록 요청합니다. 노출 영역 패키지에는 OnDevicePersonalization 샌드박스에서 실행되는 #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver)에 대한 이전 호출의 결과 콘텐츠가 있는 View가 포함됩니다.

매개변수
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일 수 없습니다.