Quais são os benefícios da maneira Android de “salvar memória” - explicitamente passando objetos Contexto para todos os lugares?

5

Acabou que esta pergunta não é fácil de formular para mim, mas vamos tentar.
No Android, praticamente qualquer objeto de interface do usuário depende de um Context e tem duração definida. O Android também pode destruir e recriar objetos da interface do usuário e até mesmo todo o processo do aplicativo a qualquer momento, e assim por diante. Isso torna a codificação de operações assíncronas correta e não direta. (e às vezes muito pesado) Mas eu nunca vi uma explicação real, por que é feito dessa maneira? Existem outros sistemas operacionais, incluindo sistemas operacionais móveis (iOS, por exemplo), que não fazem isso. Então, quais são os ganhos da maneira Android (objetos de interface do usuário volátil e contextos)? Isso permite que os aplicativos Android usem muito menos memória RAM ou talvez haja outros benefícios?

    
por Sarge Borsch 12.02.2014 / 14:19
fonte

1 resposta

1

Você está certo sobre o uso de "menos" memória, mas não é apenas menos, mas um limite superior fixo para o tamanho de heap de cada processo. Isso significa que a coleta de lixo normal do Java pode operar dentro de todas as instâncias do Java Runtime, sem coordenação com outros processos. Isso também significa que os processos podem ser o limite do sandbox para aplicativos Android.

Isso provou ser mais bem-sucedido do que implementações de VMs multitarefa e outras abordagens para compartilhar uma única VM entre vários aplicativos.

A abordagem multi-processo do Android é possível graças ao Zygote. O Zygote permite a inicialização rápida de um runtime do Android com a maioria das classes base carregadas. Você nem mesmo copia o heap desde que o Android é executado no modo de cópia em gravação. É muito legal que os processos, várias instâncias de tempo de execução (LOTES de instâncias de tempo de execução sejam comparadas a qualquer outro ambiente Java) e o tamanho de heap limitado funcione tão bem juntos.

    
por 30.04.2014 / 03:29
fonte