IncrementalInstallSession

public class IncrementalInstallSession
extends Object

java.lang.Object
   ↳ com.android.incfs.install.IncrementalInstallSession


用于创建增量软件包安装会话,在该会话中,已安装 APK 的块在需要读取时会流式传输到设备。

增量安装使用增量文件系统 (IncFs),以便在整个 APK 流式传输到设备之前完成安装。此类可用于启动增量安装、控制允许将 APK 的哪些块流式传输到设备,以及等待 APK 安装完成和/或所有块都已流式传输到设备。

与设备的连接会一直保持打开状态,直到会话关闭、安装失败、设备连接超时或在处理来自设备的块请求时发生异常。

此类的使用示例如下:

{@code try (IncrementalInstallSession session = new IncrementalInstallSession.Builder()
               .addApk(mTestApk0, mTestSignature0)
               .build()) {
         // Start the session on a separate thread.
         session.start(Executors.newCachedThreadPool(), mockDevice.getFactory());

         // Wait a maximum of 45 seconds for the install to finish.
         session.waitForInstallCompleted(45, TimeUnit.SECONDS);
 }

摘要

嵌套类

class IncrementalInstallSession.Builder

 

公共方法

void close()

取消与设备的通信。

IncrementalInstallSession start(Executor executor, IDeviceConnection.Factory conFactory)

启动流式安装会话。

void waitForAnyCompletion(long timeout, TimeUnit units)

阻塞当前线程,直到 APK 数据已流式传输到设备或安装完成。

void waitForInstallCompleted(long timeout, TimeUnit units)

阻塞当前线程,直到所有 APK 都已成功安装。

void waitForServingCompleted(long timeout, TimeUnit units)

阻塞当前线程,直到所有 APK 数据都已流式传输到设备。

公共方法

关闭

public void close ()

取消与设备的通信。

start

public IncrementalInstallSession start (Executor executor, 
                IDeviceConnection.Factory conFactory)

启动流式安装会话。

参数
executor Executor:用于开始处理来自设备的块请求的执行器

conFactory IDeviceConnection.Factory:设备连接工厂

返回
IncrementalInstallSession

抛出
如果与设备通信时发生错误

waitForAnyCompletion

public void waitForAnyCompletion (long timeout, 
                TimeUnit units)

阻塞当前线程,直到 APK 数据已流式传输到设备或安装完成。

参数
timeout long:等待的最长时间。值为 0 会导致此方法无限期等待。

units TimeUnit:非零 timeout 的单位

抛出
如果等待超时、APK 安装失败或在处理块请求时发生异常,则返回 true。

waitForInstallCompleted

public void waitForInstallCompleted (long timeout, 
                TimeUnit units)

阻塞当前线程,直到所有 APK 都已成功安装。数据服务可能会在安装成功之前或之后完成。

参数
timeout long:等待安装完成的最长时间。值为 0 会导致此方法无限期等待。

units TimeUnit:非零 timeout 的单位

抛出
如果等待超时、APK 安装失败或在处理块请求时发生异常,则返回 true。

waitForServingCompleted

public void waitForServingCompleted (long timeout, 
                TimeUnit units)

阻塞当前线程,直到所有 APK 数据都已流式传输到设备。安装可能会在提供服务完成之前或之后完成。

参数
timeout long:等待服务完成的最长时间。值为 0 会导致此方法无限期等待。

units TimeUnit:非零 timeout 的单位

抛出
如果等待超时、无法流式传输 APK 或在处理块请求时发生异常。