OnDevicePersonalizationManager
public
class
OnDevicePersonalizationManager
extends Object
java.lang.Object | |
↳ | android.adservices.ondevicepersonalization.OnDevicePersonalizationManager |
OnDevicePersonalizationManager, ऐप्लिकेशन के लिए एपीआई उपलब्ध कराता है. इनसे, ऐप्लिकेशन को अलग-अलग प्रोसेस में
IsolatedService
को लोड करने और उससे इंटरैक्ट करने में मदद मिलती है.
कोई ऐप्लिकेशन, IsolatedService
से कॉन्टेंट जनरेट करने का अनुरोध कर सकता है, ताकि वह ऐप्लिकेशन के व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) में मौजूद SurfaceView
में कॉन्टेंट जनरेट कर सके. साथ ही, डिवाइस पर मौजूद स्टोरेज में लगातार नतीजे लिख सकता है. इन नतीजों को फ़ेडरेटेड Analytics, क्रॉस-डिवाइस आंकड़ों के विश्लेषण के लिए इस्तेमाल कर सकता है. इसके अलावा, मॉडल ट्रेनिंग के लिए फ़ेडरेटेड लर्निंग भी इसका इस्तेमाल कर सकता है. कॉल करने वाले ऐप्लिकेशन के पास, डिसप्ले किया गया कॉन्टेंट और लगातार दिखने वाला आउटपुट, दोनों को सीधे ऐक्सेस करने का विकल्प नहीं होता.
खास जानकारी
सार्वजनिक तरीके | |
---|---|
void
|
execute(ComponentName handler, PersistableBundle params, Executor executor, OutcomeReceiver<List<SurfacePackageToken>, Exception> receiver)
OnDevicePersonalization सैंडबॉक्स में |
void
|
requestSurfacePackage(SurfacePackageToken surfacePackageToken, IBinder surfaceViewHostToken, int displayId, int width, int height, Executor executor, OutcomeReceiver<SurfaceControlViewHost.SurfacePackage, Exception> receiver)
कॉलिंग ऐप्लिकेशन के अंदर |
इनहेरिट किए गए तरीके | |
---|---|
सार्वजनिक तरीके
execute
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 : IsolatedService का ComponentName .
यह वैल्यू null नहीं हो सकती. |
params |
PersistableBundle : एक PersistableBundle , जिसे कॉल करने वाले ऐप्लिकेशन से
IsolatedService में पास किया जाता है. इस पैरामीटर के लिए, कॉन्टेंट के लिए 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 ऑब्जेक्ट की लिस्ट में कोई एंट्री शून्य हो सकती है. इससे यह पता चलता है कि सेवा के पास उस खास प्लैटफ़ॉर्म के लिए कोई आउटपुट नहीं है.
गड़बड़ी होने पर, रिसीवर इनमें से कोई एक अपवाद दिखाता है:
अगर हैंडलर पैकेज इंस्टॉल नहीं है या उसके पास मान्य ODP मेनिफ़ेस्ट नहीं है, तो PackageManager.NameNotFoundException दिखाता है.
अगर हैंडलर क्लास नहीं मिलती है, तो ClassNotFoundException दिखाता है.
अगर हैंडलर को लागू करने में कोई गड़बड़ी होती है, तो OnDevicePersonalizationException दिखाता है. |
requestSurfacePackage
public void requestSurfacePackage (SurfacePackageToken surfacePackageToken, IBinder surfaceViewHostToken, int displayId, int width, int height, Executor executor, OutcomeReceiver<SurfaceControlViewHost.SurfacePackage, Exception> receiver)
कॉल करने वाले ऐप्लिकेशन में SurfaceView
में SurfaceControlViewHost.SurfacePackage
डालने का अनुरोध करता है. सरफ़ेस पैकेज में View
होगा, जिसमें OnDevicePersonalization सैंडबॉक्स में चल रहे #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver)
के पिछले कॉल के नतीजे का कॉन्टेंट होगा.
पैरामीटर | |
---|---|
surfacePackageToken |
SurfacePackageToken : #execute(ComponentName, PersistableBundle, Executor, OutcomeReceiver) पर किए गए किसी पिछले कॉल से मिले SurfacePackageToken का रेफ़रंस.
यह मान null नहीं हो सकता. |
surfaceViewHostToken |
IBinder : SurfaceView का hostToken, जो व्यू हैरारकी में SurfaceView को जोड़ने के बाद, SurfaceView.getHostToken() से दिखाया जाता है.
यह मान null नहीं हो सकता. |
displayId |
int : उस लॉजिकल डिसप्ले का पूर्णांक आईडी जिस पर
SurfaceControlViewHost.SurfacePackage दिखाना है. इसे
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 नहीं हो सकता. |