Quali sono i vantaggi del modo in cui Android "salva memoria" - passando in modo esplicito oggetti di contesto ovunque?

5

Venuto fuori, questa domanda non è facile da formulare per me, ma proviamo.
In Android, praticamente qualsiasi oggetto dell'interfaccia utente dipende da Context e ha una durata definita. Android può anche distruggere e ricreare gli oggetti dell'interfaccia utente e persino l'intero processo di applicazione in qualsiasi momento e così via. Ciò rende la codifica delle operazioni asincrone correttamente non semplice. (e talvolta molto ingombrante) Ma non ho mai visto una vera spiegazione, perché è andata in quel modo? Esistono altri sistemi operativi, compresi i sistemi operativi mobili (iOS, ad esempio), che non eseguono tali operazioni. Quindi, quali sono le vittorie del modo Android (oggetti e contesti volatili dell'interfaccia utente)? Ciò consente alle applicazioni Android di utilizzare meno RAM, o forse ci sono altri vantaggi?

    
posta Sarge Borsch 12.02.2014 - 14:19
fonte

1 risposta

1

Hai ragione a usare la memoria "meno" ma non è solo inferiore, ma un limite superiore fisso alla dimensione dell'heap di ciascun processo. Ciò significa che la normale garbage collection di Java può operare all'interno di ogni istanza del runtime Java, senza il coordinamento con altri processi. Significa anche che i processi possono essere il limite sandbox per le app Android.

Ciò ha dimostrato di avere più successo delle implementazioni di VM multi-tasking e altri approcci per condividere una singola VM tra più applicazioni.

L'approccio multi-processo di Android è reso possibile da Zygote. Zygote consente l'avvio rapido di un runtime Android avendo caricato la maggior parte delle classi base. Non copi nemmeno l'heap da quando Android viene eseguito in modalità copia su scrittura. È piuttosto interessante il fatto che i processi, più istanze di runtime (LOTS di istanze di runtime confrontate con qualsiasi altro ambiente Java) e dimensioni heap ridotte funzionino tutte insieme così bene.

    
risposta data 30.04.2014 - 03:29
fonte

Leggi altre domande sui tag