已在 API 级别 34 中引入
也已在广告服务扩展 4 中引入

SandboxedSdkProvider

public abstract class SandboxedSdkProvider
extends Object

java.lang.Object
   ↳ android.app.sdksandbox.SandboxedSdkProvider


封装 SDK 沙盒可用于与加载到其中的 SDK 进行交互的 API。

SDK 必须实现此抽象类才能生成入口点,以便 SDK 沙盒通过该入口点对 SDK 进行调用。

总结

公共构造函数

SandboxedSdkProvider()

公共方法

final void attachContext(Context context)

设置 SDK Context,然后可使用 getContext() 接收该 SDK。

void beforeUnloadSdk()

执行 SDK 在卸载前释放其资源所需的工作。

final Context getContext()

返回之前通过 SandboxedSdkProvider#attachContext 设置的 Context

abstract View getView(Context windowContext, Bundle params, int width, int height)

请求远程呈现到客户端应用进程的视图。

abstract SandboxedSdk onLoadSdk(Bundle params)

执行 SDK 开始处理请求所需的工作。

继承的方法

公共构造函数

SandboxedSdkProvider

已在 API 级别 34 中引入
也已在广告服务扩展 4 中引入
public SandboxedSdkProvider ()

公共方法

attachContext

已在 API 级别 34 中引入
也已在广告服务扩展 4 中引入
public final void attachContext (Context context)

设置 SDK Context,然后可使用 getContext() 接收该上下文。此方法在调用 onLoadSdk(Bundle) 之前调用。在此之前不应执行需要 Context 的操作,因为在调用此方法之前,SandboxedSdkProvider#getContext 会返回 null。

如果已设置基本上下文,则会抛出 IllegalStateException。

参数
context Context:新的基本上下文。 此值不能为 null

beforeUnloadSdk

已在 API 级别 34 中引入
也已在广告服务扩展 4 中引入
public void beforeUnloadSdk ()

执行 SDK 在卸载前释放其资源所需的工作。

SDK 沙盒管理器会在卸载 SDK 前调用此函数。SDK 对之前通过 SandboxedSdk.getInterface() 返回给客户端的 Binder 的任何调用均应失败。

SDK 不应在此处执行任何长时间运行的任务,如 I/O 和网络调用。

getContext

已在 API 级别 34 中引入
也已在广告服务扩展 4 中引入
public final Context getContext ()

返回之前通过 SandboxedSdkProvider#attachContext 设置的 Context。如果之前未设置任何上下文,此方法将返回 null。

返回
Context

getView

已在 API 级别 34 中引入
也已在广告服务扩展 4 中引入
public abstract View getView (Context windowContext, 
                Bundle params, 
                int width, 
                int height)

请求远程呈现到客户端应用进程的视图。

返回的 View 将封装到 SurfacePackage 中。生成的 SurfacePackage 将发送回客户端应用。

SDK 不应在此处执行任何长时间运行的任务,如 I/O 和网络调用。否则会导致 SDK 无法接收来自客户端的请求。

参数
windowContext Context:要用于显示视图的屏幕的 Context。此值不能为 null

params Bundle:请求视图的客户端应用传递的参数列表。此值不能为 null

width int:返回的视图将按照此宽度(以像素为单位)的窗口布局。

height int:返回的视图将按照此高度(以像素为单位)的窗口布局。

返回
View SDK 沙盒传递给请求视图的客户端应用的 View 此值不能为 null

onLoadSdk

已在 API 级别 34 中引入
也已在广告服务扩展 4 中引入
public abstract SandboxedSdk onLoadSdk (Bundle params)

执行 SDK 开始处理请求所需的工作。

SDK 沙盒会在加载 SDK 后调用此函数。

SDK 应执行任何必要工作来为处理即将到来的请求做好准备。它不应在此处执行任何长时间运行的任务,如 I/O 和网络调用。否则会导致 SDK 无法接收来自客户端的请求。此外,它不应执行依赖于要将其他 SDK 加载到 SDK 沙盒中的初始化操作。

在调用此方法之前,SDK 不应执行任何需要 Context 对象的操作。

参数
params Bundle:客户端在加载 SDK 时传递的参数列表。此参数可以为空。此值不能为 null

返回
SandboxedSdk 返回将传递回客户端的 SandboxedSdk。用于创建 客户端将使用 SandboxedSdk 对象调用 SDK。 此值不能为 null

抛出
LoadSdkException