OnDevicePersonalizationManager

public class OnDevicePersonalizationManager
extends Object

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


OnDevicePersonalizationManager มี API สําหรับแอปในการโหลด IsolatedService ในกระบวนการแยกต่างหากและโต้ตอบกับ IsolatedService แอปสามารถขอ IsolatedService เพื่อสร้างเนื้อหาเพื่อแสดงภายใน SurfaceView ภายในลําดับชั้นมุมมองของแอป และเขียนผลลัพธ์ถาวรลงในพื้นที่เก็บข้อมูลในอุปกรณ์ ซึ่ง Federated Analytics สามารถใช้สําหรับการวิเคราะห์ทางสถิติข้ามอุปกรณ์ หรือ Federated Learning สามารถใช้สําหรับการฝึกโมเดลได้ แอปการโทรไม่สามารถเข้าถึงเนื้อหาที่แสดงและเอาต์พุตถาวรได้โดยตรง

สรุป

เมธอดสาธารณะ

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

เรียกใช้ IsolatedService ในแซนด์บ็อกซ์ OnDevicePersonalization

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

ส่งคําขอแทรก SurfaceControlViewHost.SurfacePackage ลงใน SurfaceView ภายในแอปการโทร

วิธีการที่รับช่วงมา

เมธอดสาธารณะ

ดำเนินการ

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

เรียกใช้ IsolatedService ในแซนด์บ็อกซ์ OnDevicePersonalization แพลตฟอร์มจะเชื่อมโยงกับ IsolatedService ที่ระบุในกระบวนการแยกต่างหาก และเรียกใช้ IsolatedWorker#onExecute(ExecuteInput, java.util.function.Consumer) ด้วยพารามิเตอร์ที่ผู้เรียกให้ เมื่อ IsolatedService ดำเนินการเสร็จแล้ว แพลตฟอร์มจะแสดงผลลัพธ์จากบริการแก่ผู้เรียก คุณจะใช้โทเค็นเหล่านี้เพื่อแสดงผลลัพธ์ใน SurfaceView ภายในแอปการโทรได้ในภายหลัง

พารามิเตอร์
handler ComponentName: ComponentName ของ IsolatedService ค่านี้ต้องไม่เป็น null

params PersistableBundle: PersistableBundle ที่ส่งมาจากแอปที่โทรไปยัง IsolatedService เนื้อหาที่คาดไว้ของพารามิเตอร์นี้กำหนดโดยIsolatedService แพลตฟอร์มจะไม่ตีความพารามิเตอร์นี้ ค่านี้ต้องไม่เป็น null

executor Executor: Executor ที่จะเรียกใช้ Callback ค่านี้ต้องไม่เป็น null ระบบจะส่งเหตุการณ์ Callback และ Listener ผ่าน Executor นี้ ซึ่งช่วยให้ควบคุมได้ง่ายว่าจะใช้เธรดใด หากต้องการส่งเหตุการณ์ผ่านเธรดหลักของแอปพลิเคชัน ให้ใช้ Context.getMainExecutor() หรือระบุ Executor ที่ส่งไปยังเธรดที่เหมาะสม

receiver OutcomeReceiver: การดำเนินการนี้จะแสดงรายการออบเจ็กต์ SurfacePackageToken โดยแต่ละรายการจะอ้างอิงแบบทึบไปยัง RenderingConfig ที่ IsolatedService แสดงผล หรือ Exception หากดำเนินการไม่สำเร็จ คุณสามารถใช้ออบเจ็กต์ SurfacePackageToken ที่แสดงผลในการเรียกใช้ requestSurfacePackage(android.adservices.ondevicepersonalization.SurfacePackageToken, android.os.IBinder, int, int, int, java.util.concurrent.Executor, android.os.OutcomeReceiver) ถัดไปเพื่อแสดงผลลัพธ์ในมุมมอง แอปการโทรและ IsolatedService ต้องเห็นพ้องกันในเรื่องขนาดที่คาดไว้ของรายการนี้ รายการในรายการออบเจ็กต์ SurfacePackageToken ที่แสดงผลอาจเป็น Null เพื่อบ่งบอกว่าบริการไม่มีเอาต์พุตสำหรับแพลตฟอร์มนั้นๆ ในกรณีที่เกิดข้อผิดพลาด ผู้รับจะแสดงข้อยกเว้นอย่างใดอย่างหนึ่งต่อไปนี้ โดยจะแสดงค่า PackageManager.NameNotFoundException หากไม่ได้ติดตั้งแพ็กเกจตัวแฮนเดิลหรือไม่มีไฟล์ Manifest ของ ODP ที่ถูกต้อง แสดงผล ClassNotFoundException หากไม่พบคลาสของเครื่องจัดการ แสดงผล OnDevicePersonalizationException หากการเรียกใช้ตัวแฮนเดิลไม่สำเร็จ

แพ็กเกจ requestSurface

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

ส่งคําขอแทรก SurfaceControlViewHost.SurfacePackage ลงใน SurfaceView ภายในแอปที่โทร แพ็กเกจแพลตฟอร์มจะมี View ที่มีเนื้อหาจากผลลัพธ์ของการเรียกใช้ #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver) ก่อนหน้านี้ซึ่งทํางานในแซนด์บ็อกซ์ OnDevicePersonalization

พารามิเตอร์
surfacePackageToken SurfacePackageToken: การอ้างอิงไปยัง SurfacePackageToken ที่แสดงผลโดยการเรียกไปยัง #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver) ก่อนหน้า ค่านี้ต้องไม่เป็น null

surfaceViewHostToken IBinder: hostToken ของ SurfaceView ซึ่ง SurfaceView.getHostToken() จะแสดงผลหลังจากเพิ่ม SurfaceView ลงในลําดับชั้นของมุมมอง ค่านี้ต้องไม่เป็น null

displayId int: รหัสจำนวนเต็มของการแสดงผลแบบลอจิคัลที่จะแสดง SurfaceControlViewHost.SurfacePackage ซึ่งแสดงผลโดย Context.getDisplay().getDisplayId()

width int: ความกว้างของ SurfaceControlViewHost.SurfacePackage เป็นพิกเซล

height int: ความสูงของ SurfaceControlViewHost.SurfacePackage เป็นพิกเซล

executor Executor: Executor ที่จะเรียกใช้การเรียกกลับ ค่านี้ต้องไม่ใช่ null ระบบจะส่งเหตุการณ์ Callback และ Listener ผ่าน Executor นี้ ซึ่งช่วยให้ควบคุมได้ง่ายว่าจะใช้เธรดใด หากต้องการส่งเหตุการณ์ผ่านเธรดหลักของแอปพลิเคชัน ให้ใช้ Context.getMainExecutor() หรือระบุ Executor ที่ส่งไปยังเธรดที่เหมาะสม

receiver OutcomeReceiver: ส่งคืน SurfaceControlViewHost.SurfacePackage เมื่อสำเร็จ หรือ Exception เมื่อล้มเหลว ประเภทข้อยกเว้นคือ OnDevicePersonalizationException หากการเรียกใช้ตัวแฮนเดิลไม่สำเร็จ ค่านี้ต้องไม่เป็น null