OnDevicePersonalizationManager

public class OnDevicePersonalizationManager
extends Object

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


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

요약

공개 메서드

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을 삽입하도록 요청합니다.

상속된 메서드

Object clone()

이 개체의 사본을 만들어 반환합니다.

boolean equals(Object obj)

일부 다른 개체가 이 개체와 '같은'지 여부를 나타냅니다.

void finalize()

가비지 컬렉션이 더 이상 객체에 관한 참조가 없다고 판단하는 경우 객체의 가비지 컬렉터에서 호출합니다.

final Class<?> getClass()

Object의 런타임 클래스를 반환합니다.

int hashCode()

객체의 해시 코드 값을 반환합니다.

final void notify()

이 객체의 모니터에서 대기 중인 단일 스레드의 대기 모드를 해제합니다.

final void notifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드의 대기 모드를 해제합니다.

String toString()

객체의 문자열 표현을 반환합니다.

final void wait(long timeoutMillis, int nanos)

일반적으로 알림을 받거나 중단되어 절전 모드에서 해제될 때까지 또는 일정 시간이 경과할 때까지 현재 스레드가 대기하도록 합니다.

final void wait(long timeoutMillis)

일반적으로 알림을 받거나 중단되어 절전 모드에서 해제될 때까지 또는 일정 시간이 경과할 때까지 현재 스레드가 대기하도록 합니다.

final void wait()

일반적으로 알림을 받거나 중단되어 절전 모드에서 해제될 때까지 현재 스레드가 대기하도록 합니다.

공개 메서드

실행

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