IsolatedService

public abstract class IsolatedService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ android.adservices.ondevicepersonalization.IsolatedService


ODP 在调用 OnDevicePersonalizationManager#execute(ComponentName, PersistableBundle, java.util.concurrent.Executor, OutcomeReceiver) 时所启动且在独立进程中运行的服务的适用基类。该服务可以生成要在调用应用的 SurfaceView 中显示的内容,并将永久性结果写入设备端存储空间,以便联邦分析进行跨设备统计分析或联邦学习进行模型训练。客户端应用使用 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 中的网址。在 WebView 中呈现 HTML 时,平台会拦截对这些网址的请求并调用 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