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 ()

Отменяет связь с устройством.

начинать

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 не удалось установить или возникло исключение при обработке запросов на блок.

waitForInstallCompleted

public void waitForInstallCompleted (long timeout, 
                TimeUnit units)

Блокирует текущий поток до успешной установки всех APK-файлов. Передача данных может быть завершена до или после успешной установки.

Параметры
timeout long : максимальное время ожидания завершения установки. Значение 0 приведёт к бесконечному ожиданию.

units TimeUnit : единицы для ненулевого timeout

Броски
если время ожидания истекло, APK не удалось установить или возникло исключение при обработке запросов на блок.

waitForServingCompleted

public void waitForServingCompleted (long timeout, 
                TimeUnit units)

Блокирует текущий поток до тех пор, пока все данные APK не будут переданы на устройство. Установка может завершиться до или после завершения обслуживания.

Параметры
timeout long : максимальное время ожидания завершения обслуживания. Значение 0 приведёт к бесконечному ожиданию.

units TimeUnit : единицы для ненулевого timeout

Броски
если время ожидания истекло, APK не может быть передан потоком или возникает исключение при обработке запросов на блок.