IncrementalInstallSession

public class IncrementalInstallSession
extends Object implements AutoCloseable

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


Viene utilizzata per creare una sessione di installazione incrementale dei pacchetti in cui i blocchi degli APK installati vengono trasmessi in streaming al dispositivo quando devono essere letti.

L'installazione incrementale utilizza Incremental Filesystem (IncFs) per consentire il completamento dell'installazione prima che l'intero APK sia stato trasmesso in streaming al dispositivo. Questa classe può essere utilizzata per avviare un'installazione incrementale, controllare quali blocchi dell'APK possono essere trasmessi in streaming al dispositivo e attendere il completamento dell'installazione dell'APK e/o la trasmissione in streaming di tutti i blocchi al dispositivo.

La connessione al dispositivo rimane aperta fino alla chiusura della sessione, al fallimento dell'installazione, al timeout della connessione del dispositivo o al verificarsi di un'eccezione durante l'elaborazione delle richieste di blocco dal dispositivo.

Un esempio di utilizzo di questa classe è il seguente:

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

Riepilogo

Classi nidificate

class IncrementalInstallSession.Builder

 

Metodi pubblici

void close()

Annulla la comunicazione con il dispositivo.

IncrementalInstallSession start(Executor executor, IDeviceConnection.Factory conFactory)

Avvia la sessione di installazione in streaming.

void waitForAnyCompletion(long timeout, TimeUnit units)

Blocca il thread corrente finché i dati APK non sono stati trasmessi in streaming al dispositivo o l' installazione non è terminata.

void waitForInstallCompleted(long timeout, TimeUnit units)

Blocca il thread corrente finché tutti gli APK non sono stati installati correttamente.

void waitForServingCompleted(long timeout, TimeUnit units)

Blocca il thread corrente finché tutti i dati APK non sono stati trasmessi in streaming al dispositivo.

Metodi pubblici

close

public void close ()

Annulla la comunicazione con il dispositivo.

start

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

Avvia la sessione di installazione in streaming.

Parametri
executor Executor: l'executor su cui avviare la gestione delle richieste di blocco dal dispositivo

conFactory IDeviceConnection.Factory: la factory di connessione del dispositivo

Resi
IncrementalInstallSession

Genera
IOException se si verifica un errore durante la comunicazione con il dispositivo

waitForAnyCompletion

public void waitForAnyCompletion (long timeout, 
                TimeUnit units)

Blocca il thread corrente finché i dati APK non sono stati trasmessi in streaming al dispositivo o l' installazione non è terminata.

Parametri
timeout long: il periodo di tempo massimo di attesa. Un valore pari a 0 fa sì che questo metodo attenda indefinitamente.

units TimeUnit: unità per timeout diverso da zero

Genera
IOException se si verifica un timeout dell'attesa, l'installazione di un APK non riesce o si verifica un'eccezione durante la gestione delle richieste di blocco.
InterruptedException

waitForInstallCompleted

public void waitForInstallCompleted (long timeout, 
                TimeUnit units)

Blocca il thread corrente finché tutti gli APK non sono stati installati correttamente. La pubblicazione dei dati potrebbe terminare prima o dopo il completamento dell'installazione.

Parametri
timeout long: il periodo di tempo massimo di attesa per il completamento delle installazioni. Un valore pari a 0 fa sì che questo metodo attenda indefinitamente.

units TimeUnit: unità per timeout diverso da zero

Genera
IOException se si verifica un timeout dell'attesa, l'installazione di un APK non riesce o si verifica un'eccezione durante la gestione delle richieste di blocco.
InterruptedException

waitForServingCompleted

public void waitForServingCompleted (long timeout, 
                TimeUnit units)

Blocca il thread corrente finché tutti i dati APK non sono stati trasmessi in streaming al dispositivo. L'installazione potrebbe terminare prima o dopo il completamento della pubblicazione.

Parametri
timeout long: il periodo di tempo massimo di attesa per il completamento della pubblicazione. Un valore pari a 0 fa sì che questo metodo attenda indefinitamente.

units TimeUnit: unità per timeout diverso da zero

Genera
IOException se si verifica un timeout dell'attesa, la trasmissione in streaming di un APK non riesce o si verifica un'eccezione durante la gestione delle richieste di blocco.
InterruptedException