IsolatedService

public abstract class IsolatedService
继承自 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 中显示,并将持久性结果写入设备存储,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 创建一个绑定器。

abstract IsolatedWorker onRequest(RequestToken requestToken)

返回一个 IsolatedWorker 实例,用于处理客户端请求。

继承的方法

公有构造函数

IsolatedService

public IsolatedService ()

公有方法

getEventUrlProvider

public final EventUrlProvider getEventUrlProvider (RequestToken requestToken)

为当前请求返回一个 EventUrlProvider。`EventUrlProvider` 提供可嵌入到 HTML 中的 URL。当 HTML 在 WebView 中渲染时,平台会拦截对这些 URL 的请求并调用 `IsolatedWorker#onEvent(EventInput, Consumer)`。

参数
requestToken RequestToken:标识服务当前请求的不透明令牌。该值不能为 `null`。

返回
EventUrlProvider 一个返回事件跟踪 URL 的 EventUrlProvider。该值不能为 `null`。

getFederatedComputeScheduler

public final FederatedComputeScheduler getFederatedComputeScheduler (RequestToken requestToken)

为当前请求返回一个 FederatedComputeScheduler。`FederatedComputeScheduler` 可用于调度和取消联合计算任务。联合计算包括联合学习和联合分析任务。

参数
requestToken RequestToken:标识服务当前请求的不透明令牌。该值不能为 `null`。

返回
FederatedComputeScheduler 一个返回联合计算任务调度程序的 FederatedComputeScheduler。该值不能为 `null`。

getLocalData

public final MutableKeyValueStore getLocalData (RequestToken requestToken)

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

参数
requestToken RequestToken:标识服务当前请求的不透明令牌。该值不能为 `null`。

返回
MutableKeyValueStore 一个 MutableKeyValueStore 对象,提供对 LOCAL_DATA 表的访问。返回的 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 清单中的 tag 下载的数据,示例如下所示。

<!-- 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 一个 KeyValueStore 对象,提供对 REMOTE_DATA 表的访问。返回的 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 中的任何 extras 都将不会在此处看到。该值不能为 `null`。

返回
IBinder 此值可能为 `null`。

onCreate

public void onCreate ()

IsolatedService 创建一个绑定器。

onRequest

public abstract IsolatedWorker onRequest (RequestToken requestToken)

返回一个 IsolatedWorker 实例,用于处理客户端请求。

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

返回
IsolatedWorker 此值不能为 `null`。