IsolatedService

public abstract class IsolatedService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.Context 封装容器
       ↳ android.app.Service
         ↳ android.adservices.ondevicepersonalization.IsolatedService


服务的基类,由 ODP 通过调用 OnDevicePersonalizationManager#execute(ComponentName, PersistableBundle, java.util.concurrent.Executor, OutcomeReceiver) 启动并在隔离进程中运行。该服务可以生成要在调用应用的 SurfaceView 中显示的内容,并将持久性结果写入设备端存储空间,可供 Federated Analytics 使用以进行跨设备统计分析,Federated Learning 可以使用这些信息进行模型训练。 客户端应用使用 OnDevicePersonalizationManagerIsolatedService 交互。

总结

继承的常量

公共构造函数

IsolatedService()

公共方法

final EventUrlProvider getEventUrlProvider(RequestToken requestToken)

针对当前请求返回 EventUrlProvider

final FederatedComputeScheduler getFederatedComputeScheduler(RequestToken requestToken)

针对当前请求返回 FederatedComputeScheduler

final MutableKeyValueStore getLocalData(RequestToken requestToken)

返回 LOCAL_DATA 表的数据访问对象。

final LogReader getLogReader(RequestToken requestToken)

为 REQUESTS 和 EVENTS 表返回 DAO,以提供对 IsolatedService 读取的行的访问权限。

final KeyValueStore getRemoteData(RequestToken requestToken)

返回 REMOTE_DATA 表的数据访问对象。

final UserData getUserData(RequestToken requestToken)

返回平台为当前请求提供的 UserData

IBinder onBind(Intent intent)

处理到 IsolatedService 的绑定。

void onCreate()

IsolatedService 创建 binder。

abstract IsolatedWorker onRequest(RequestToken requestToken)

返回处理客户端请求的 IsolatedWorker 实例。

继承的方法

公共构造函数

IsolatedService

public IsolatedService ()

公共方法

getEventUrlProvider

public final EventUrlProvider getEventUrlProvider (RequestToken requestToken)

针对当前请求返回 EventUrlProviderEventUrlProvider 提供可嵌入 HTML 的网址。当 HTML 呈现在 WebView 中时,平台会拦截对这些网址的请求并调用 IsolatedWorker#onEvent(EventInput, Consumer)

参数
requestToken RequestToken:一个不透明令牌,用于标识对服务的当前请求。此值不能为 null

开球回攻次数
EventUrlProvider 一个 EventUrlProvider,返回事件跟踪网址。此值不能为 null

getFederatedComputeScheduler

public final FederatedComputeScheduler getFederatedComputeScheduler (RequestToken requestToken)

针对当前请求返回 FederatedComputeSchedulerFederatedComputeScheduler 可用于调度和取消联合计算作业。联合计算包括联邦学习和联合分析作业。

参数
requestToken RequestToken:一个不透明令牌,用于标识对服务的当前请求。此值不能为 null

开球回攻次数
FederatedComputeScheduler 一个 FederatedComputeScheduler,用于返回联合计算作业调度器。此值不能为 null

getLocalData

public final MutableKeyValueStore getLocalData (RequestToken requestToken)

返回 LOCAL_DATA 表的数据访问对象。LOCAL_DATA 表是一个永久性键值对存储区,服务可以使用它来存储任何数据。此表的内容仅对在隔离进程中运行的服务可见,并且不能发送到设备外部。

参数
requestToken RequestToken:一个不透明令牌,用于标识对服务的当前请求。此值不能为 null

开球回攻次数
MutableKeyValueStore 提供对 LOCAL_DATA 表的访问权限的 MutableKeyValueStore 对象。返回的 MutableKeyValueStore 中的方法是阻塞操作,应从工作线程(而不是主线程或 binder 线程)调用。 此值不能为 null

getLogReader

public final LogReader getLogReader (RequestToken requestToken)

为 REQUESTS 和 EVENTS 表返回 DAO,以提供对 IsolatedService 读取的行的访问权限。

参数
requestToken RequestToken:一个不透明令牌,用于标识对服务的当前请求。此值不能为 null

开球回攻次数
LogReader 一个 LogReader 对象,提供对 REQUESTS 和 EVENTS 表的访问权限。返回的 LogReader 中的方法是阻塞操作,应从工作线程(而不是主线程或 binder 线程)调用。 此值不能为 null

getRemoteData

public final KeyValueStore getRemoteData (RequestToken requestToken)

返回 REMOTE_DATA 表的数据访问对象。REMOTE_DATA 表是一个只读键值对存储区,其中包含从服务的 ODP 清单的 标记中声明的端点定期下载的数据,如以下示例所示。

<!-- Contents of res/xml/OdpSettings.xml -->
 <on-device-personalization>
 <!-- Name of the service subclass -->
 <service "com.example.odpsample.SampleService">
   <!-- If this tag is present, ODP will periodically poll this URL and
    download content to populate REMOTE_DATA. Adopters that do not need to
    download content from their servers can skip this tag. -->
   <download-settings url="https://example.com/get" />
 </service>
 </on-device-personalization>
 

参数
requestToken RequestToken:一个不透明令牌,用于标识对服务的当前请求。此值不能为 null

开球回攻次数
KeyValueStore 提供对 REMOTE_DATA 表的访问权限的 KeyValueStore 对象。返回的 KeyValueStore 中的方法是阻塞操作,应从工作器线程(而不是主线程或 binder 线程)调用。 此值不能为 null

getUserData

public final UserData getUserData (RequestToken requestToken)

为当前请求返回平台提供的 UserData

参数
requestToken RequestToken:一个不透明令牌,用于标识对服务的当前请求。此值不能为 null

开球回攻次数
UserData 一个 UserData 对象。 此值可以为 null

onBind

public IBinder onBind (Intent intent)

处理到 IsolatedService 的绑定。

参数
intent Intent:用于绑定到此服务的 intent,如为 Context.bindService 所提供。请注意,此时 Intent 中包含的任何 extra 将在此处不可见。 此值不能为 null

开球回攻次数
IBinder 此值可以为 null

onCreate

public void onCreate ()

IsolatedService 创建 binder。

onRequest

public abstract IsolatedWorker onRequest (RequestToken requestToken)

返回处理客户端请求的 IsolatedWorker 实例。

参数
requestToken RequestToken:一个不透明令牌,用于标识向服务发出的当前请求,必须传递给依赖于每个请求状态的服务方法。此值不能为 null

开球回攻次数
IsolatedWorker 此值不能为 null