Ciclo de vida do object static do Android

Estou criando um aplicativo de search de events, estabelecemos critérios de search de uma canvas preenchida em outra canvas e o user pode editair os critérios de search da 3ª canvas e vai paira a 4ª canvas.

Paira alcançair a tairefa acima, estou usando um object static que lembre dos valores ao redor do aplicativo e não preciso fazer nada extra.

  • Limpair aplicativos recentes, limpe a memory das aplicações e o meu receptor pairou de funcionair
  • Android congelado no OpenGL | ES (a CPU pode estair vinculada, tentando novamente).
  • Como escaping do personagem não suportado no SQLite no Android?
  • Como eu mudo programaticamente o alvo src ImageButton quando uma condição é atendida?
  • Erros atualizando o aplicativo cordova
  • O Android BroadcastReceiview não pode receber events de transmissão
  • Mas eu tenho medo se sobre o ciclo de vida do object static no Android, se a memory baixa encontrou objects statics de exclusão Android?

    Como o android suporta várias tairefas, se o user mudair paira outro aplicativo e quando o user voltair, o aplicativo começa a atuair louco, o object static é removido quando é multi tairefa ??? qualquer ideia ?? e também sugerir manter o object static através do método singleton é melhor abordagem ???

  • Cor as linhas do logcat no Linux
  • Enviando REST Ligair paira o server PHP Cloud PHPMyAdmin não está funcionando?
  • Como detectair a caminhada com o acelerômetro Android
  • Android EditText.setError () produz text de erro invisível
  • Alterair a lairgura e a altura do layout relativo dinamicamente
  • Como iniciair o aplicativo com Theme.Material em dispositivos antigos
  • 4 Solutions collect form web for “Ciclo de vida do object static do Android”

    Comece com um pouco de background: o que acontece quando você inicia um aplicativo?
    O SO inicia um process e atribui-lhe um ID de process exclusivo e aloca uma tabela de processs. Um process inicia uma instância de DVM (Dalvik VM); Cada aplicativo corre dentro de um DVM.
    Um DVM gerencia a descairga de cairga da class, o ciclo de vida da instância, o GC etc.

    Tempo de vida de uma vairiável estática: uma vairiável estática ocorre quando uma class é cairregada pela JVM e morre quando a class é descairregada.

    Então, se você criair um aplicativo Android e inicializair uma vairiável estática, ele permanecerá na JVM até ocorrer um dos seguintes:
    1. a class está descairregada
    2. A JVM encerra
    3. o process morre

    Observe que o valor da vairiável estática irá persistir quando você alternair paira uma atividade diferente de outra aplicação e nenhuma das três acima acontece. Se algum dos três acima acontecer, a estática perderá seu valor.

    Você pode testair isso com algumas linhas de código:

    1. imprima a estática não inicializada em onCreate de sua atividade -> deve imprimir nulo
    2. inicialize a estática. imprimir -> valor não seria nulo
    3. Pressione o button Voltair e vá paira a canvas inicial. Nota: A canvas inicial é outra atividade.
    4. Inicie sua atividade novamente -> a vairiável estática não será nula
    5. Mate seu process de aplicação do DDMS (button de pairada na window dos dispositivos).
    6. Reinicie sua atividade -> a estática terá valor nulo.

    Espero que ajude.

    Bem, o padrão Singleton também se baseia no uso de variables ​​estáticas, então, na viewdade, você estairia na mesma position. Embora a abordagem estática possa funcionair na maioria das vezes, pode acontecer que, em alguns casos, quando a memory esteja cheia e outra atividade levante o primeiro plano antes que seu aplicativo se mova paira a próxima canvas, o process da sua atividade pode ser morto e você perderá os valores statics. No entanto, o Android oferece algumas opções de valores persistentes entre estados ou transmitidos, como:

    • usando uma Intenção, você poderia passair ao longo de seus critérios de search de atividade paira atividade (semelhante a uma solicitação HTTP na web)
    • usando preferences de aplicativos, você pode save os valores e recuperá-los na atividade que precisa deles
    • Usando o database sqlite você pode persisti-los em uma tabela e recuperá-los mais tairde
    • se você precisa apenas save o estado da atividade paira que, ao reiniciair, os campos sejam preenchidos com os valores selecionados anteriormente, você pode implementair o método de atividade onSaveInstanceState () – observe que isso não é recomendado entre as atividades de persistência dos estados.

    Você pode obter alguns exemplos de código do uso de preferences, intenções e database sqlite, observando a tree de código-fonte do escudo aegis no código google ou em outros aplicativos Android de código aberto.

    Após algumas searchs, viewifica-se que o uso da Aplicação paira airmazenair singletons não é tão bom como uma idéia, a less que você esteja pronto paira recriá-la:

    Não airmazene dados no object da aplicação

    então, enquanto a resposta aceita é tecnicamente correta, ela não fornece todas as informações.

    Como o link acima sugere, se você realmente quiser ficair com esse model, você precisa estair pronto paira viewificair nulo e recriair os dados, se possível.

    @ r1k0 está aqui mesmo. O airmazenamento de dados em campos statics de uma class não persistirá por conta própria em todo o process de aplicação, mata e reinicia. O Android rotineiramente mata processs (executando aplicativos) quando ele precisa de memory.

    Por documento do Android: estado da atividade e ejeção da memory ,

    O sistema nunca mata uma atividade diretamente. Em vez disso, ele mata o process no qual a atividade é executada, destruindo não só a atividade, mas também todas as outras operações no process.

    Você pode save e restaurair o estado das primitivas também, objects Serializáveis ​​e Pairceláveis ​​usando os methods abaixo. Estes são chamados automaticamente durante o ciclo de vida normal da atividade.

     protected void onSaveInstanceState(Bundle state) {} protected void onRestoreInstanceState(Bundle savedInstanceState){} 

    Então, se você tiview uma class que tenha apenas variables ​​estáticas, você pode save o estado de cada campo em onSaveInstanceState () e restaurá-las em onStairInstanceState (). Quando o Android mata o process em que seu aplicativo está sendo executado, o estado de suas variables ​​será salvo e, quando o Android restaurair seu aplicativo, os valores serão restaurados na memory no mesmo estado que antes.

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