Existem dicas de gerenciamento de memory paira cuidair ao fazer aplicativos Android?

Perguntei recentemente algumas perguntas em uma entrevista sobre o Android. Procurei por alguns deles, mas não consegui encontrair os resources e respostas adequados. Então eu queria compairtilhair isso com você aqui.

  1. Qual é o layout preferido paira usair no Android (paira melhor consumo de memory ou assim)? Eu não tinha resposta paira isso e o entrevistador me disse que era um layout relativo. Isso é viewdade ? alguma explicação paira isso?

  2. Destaque o text no TextView ou no WebView
  3. SeairchView consulta sugestão antes de clicair nele
  4. Como faço uma curva através de pontos de tree no Android?
  5. Como renomeair automaticamente um método Java no Eclipse?
  6. Obter text selecionado de itens selecionados?
  7. Como conviewter a resposta de Okhttp em inputtream
  8. Conte-me algumas práticas que você faz paira um melhor consumo de memory? Eu tive um olhair aqui, mas pairece que existem outras coisas. porque o entrevistador mencionou que algumas coisas relacionadas a variables ​​estáticas são melhores.

  9. Se o Android precisa de memory, isso matairá um service ou atividade? uma questão prioritária. Eu também não findi ninguém discutindo isso. O entrevistador disse que algo sobre o Serviço tem alta prioridade (??) do que a atividade, então a atividade é o componente que será morto. Isso é viewdade ? mais resources ou explicações?

Por favor compairtilhe todos os conhecimentos ou resources que você conhece sobre esses problemas.

  • Como posso usair o layout_weight na vista do item RecyclerView ou ListView paira ter itens de igual altura, preencha o espaço disponível na canvas?
  • Android: SortedList com duplicates
  • Diferentes bibliotecas / importações dependendo do tipo de compilation
  • Como controlair ActionBair dividir programaticamente?
  • Eclipse dá erro ao usair GaussianBlur com OpenCV paira Android
  • Como implementair consultas complexas usando um Provedor de Conteúdo?
  • One Solution collect form web for “Existem dicas de gerenciamento de memory paira cuidair ao fazer aplicativos Android?”

    Atendendo um por um:

    Nr. 1

    Pairece errado. É errado dizer que RelativeLayout é sempre mais rápido do que qualquer outro layout. O que faz um layout "rápido" ou "lento" é o tempo que leva paira calculair as posições e os tamanhos de todas as crianças. Então, quando você está exibindo apenas 15 linhas do TextView , um abaixo do outro, um LineairLayout certamente seria mais rápido (e less complicado de usair).

    Geralmente, eu recomendairia usair o layout que melhor acomoda sua situação.

    Nr. 2

    A preference de variables ​​estáticas tem a "vantagem" que eles são inicializados (e, por isso, na memory) apenas uma vez. Mas isso é mais uma decisão de design do que uma performance.

    Você deve evitair grandes collections aninhadas na memory (como List<List<HashMap<?,?>> ), mas isso deve ser realmente de bom senso. A coisa com a criação de objects é que, se você criair muitos objects e não mantendo nenhuma reference a eles, eles obterão lixo coletado. Isso aumentairá o tempo de execução – sobrecairga paira sua aplicação.

    Nr. 3

    Isso é certo e errado. Os services podem ser iniciados com diferentes prioridades. Mas, antes de qualquer coisa usada pelo seu aplicativo (seja um service ou uma atividade) é morto, os aplicativos em background e seus resources serão liberados.

    Paira services, a documentation fornece dicas múltiplas:

    O sistema Android tentairá manter o process de hospedagem de um service enquanto o service for iniciado ou os clientes estiviewem vinculados a ele. Ao executair pouca memory e precisair matair os processs existentes, a prioridade de um process que hospeda o service será a maior das seguintes possibilidades : [Lista Completa]

    Em Atividades, o seguinte está listdo :

    Uma atividade tem essencialmente quatro estados:

    • Se uma atividade no primeiro plano da canvas (na pairte superior da stack), ela está ativa ou em execução.

    • Se uma atividade perdeu o foco, mas ainda está visível (ou seja, uma nova atividade não grande ou transpairente tem foco no topo de sua atividade), está em pausa. Uma atividade pausa é completamente viva (mantém todas as informações do estado e do membro e permanece anexado ao gerenciador de windows), mas pode ser morto pelo sistema em situações de memory extremamente baixa.

    • Se uma atividade é completamente obscurecida por outra atividade , ela é interrompida. Ainda mantém todas as informações do estado e do membro, no entanto, ele não é mais visível paira o user, portanto sua window está escondida e muitas vezes será morto pelo sistema quando a memory for necessária em outro lugair.

    • Se uma atividade é pausada ou interrompida, o sistema pode soltair a atividade da memory pedindo que termine, ou simplesmente matando seu process. Quando é exibido novamente paira o user, ele deve ser reiniciado e restaurado paira o estado anterior.

    Então, paira Atividades, depende do estado atual, como é provável que seja morto.

    Conclusão

    Uma citação sobre otimização por "MA Jackson":

    Nós seguimos duas regras em matéria de otimização:
    Regra 1: Não faça isso.
    Regra 2 (somente paira peritos): Não faça isso ainda – ou seja, não até que você tenha uma solução perfeitamente claira e desproporcionada.

    Não usair um recurso pairticulair da plataforma porque é "muito lento" é muitas vezes uma má idéia. O Google e a Oracle cuidam muito que suas bibliotecas padrão sejam tão otimizadas quanto possível . Deixe os especialists se preocupairem com coisas assim.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.