IncrementalInstallSession

public class IncrementalInstallSession
extends Object implements AutoCloseable

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


Służy do tworzenia sesji instalacji przyrostowej pakietu, w której bloki zainstalowanych plików APK są przesyłane strumieniowo na urządzenie, gdy trzeba je odczytać.

Instalacja przyrostowa korzysta z przyrostowego systemu plików (IncFs), aby umożliwić ukończenie instalacji, zanim cały plik APK zostanie przesłany strumieniowo na urządzenie. Ta klasa może służyć do rozpoczęcia instalacji przyrostowej, kontrolowania, które bloki pliku APK mogą być przesyłane strumieniowo na urządzenie, oraz do czekania na zakończenie instalacji pliku APK lub na przesłanie wszystkich bloków na urządzenie.

Połączenie z urządzeniem pozostaje otwarte do momentu zamknięcia sesji, nieudanej instalacji, przekroczenia limitu czasu połączenia z urządzeniem lub wystąpienia wyjątku podczas przetwarzania żądań bloków z urządzenia.

Oto przykład użycia tej klasy:

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);
 }

Podsumowanie

Klasy zagnieżdżone

class IncrementalInstallSession.Builder

 

Metody publiczne

void close()

Anuluje komunikację z urządzeniem.

IncrementalInstallSession start(Executor executor, IDeviceConnection.Factory conFactory)

Rozpoczyna sesję instalacji strumieniowej.

void waitForAnyCompletion(long timeout, TimeUnit units)

Blokuje bieżący wątek do momentu przesłania danych APK na urządzenie lub zakończenia instalacji.

void waitForInstallCompleted(long timeout, TimeUnit units)

Blokuje bieżący wątek do momentu pomyślnego zainstalowania wszystkich plików APK.

void waitForServingCompleted(long timeout, TimeUnit units)

Blokuje bieżący wątek do momentu przesłania wszystkich danych APK na urządzenie.

Metody publiczne

close

public void close ()

Anuluje komunikację z urządzeniem.

start

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

Rozpoczyna sesję instalacji strumieniowej.

Parametry
executor Executor: wykonawca, na którym ma się rozpocząć obsługa żądań bloków z urządzenia.

conFactory IDeviceConnection.Factory: fabryka połączeń z urządzeniem.

Zwraca
IncrementalInstallSession

Zgłasza
IOException jeśli podczas komunikacji z urządzeniem wystąpi błąd.

waitForAnyCompletion

public void waitForAnyCompletion (long timeout, 
                TimeUnit units)

Blokuje bieżący wątek do momentu przesłania danych APK na urządzenie lub zakończenia instalacji.

Parametry
timeout long: maksymalny czas oczekiwania. Wartość 0 spowoduje, że ta metoda będzie czekać w nieskończoność.

units TimeUnit: jednostki dla niezerowego parametru timeout.

Zgłasza
IOException jeśli przekroczono limit czasu oczekiwania, nie udało się zainstalować pliku APK lub podczas obsługi żądań bloków wystąpił wyjątek.
InterruptedException

waitForInstallCompleted

public void waitForInstallCompleted (long timeout, 
                TimeUnit units)

Blokuje bieżący wątek do momentu pomyślnego zainstalowania wszystkich plików APK. Przesyłanie danych może się zakończyć przed lub po pomyślnej instalacji.

Parametry
timeout long: maksymalny czas oczekiwania na zakończenie instalacji. Wartość 0 spowoduje, że ta metoda będzie czekać w nieskończoność.

units TimeUnit: jednostki dla niezerowego parametru timeout.

Zgłasza
IOException jeśli przekroczono limit czasu oczekiwania, nie udało się zainstalować pliku APK lub podczas obsługi żądań bloków wystąpił wyjątek.
InterruptedException

waitForServingCompleted

public void waitForServingCompleted (long timeout, 
                TimeUnit units)

Blokuje bieżący wątek do momentu przesłania wszystkich danych APK na urządzenie. Instalacja może się zakończyć przed lub po zakończeniu przesyłania.

Parametry
timeout long: maksymalny czas oczekiwania na zakończenie przesyłania. Wartość 0 spowoduje, że ta metoda będzie czekać w nieskończoność.

units TimeUnit: jednostki dla niezerowego parametru timeout.

Zgłasza
IOException jeśli przekroczono limit czasu oczekiwania, nie udało się przesłać pliku APK lub podczas obsługi żądań bloków wystąpił wyjątek.
InterruptedException