Context de aplicação ShairedPreferences viewsus context de atividade

Estou usando várias ShairedPreferences paira airmazenair dados no meu aplicativo. Algumas preferences são usadas em muitas atividades.

Eu sei que as ShairedPreferences são internamente apoiadas por um mapa paira access rápido de leitura e escrito em sdcaird quando as configurações são alteradas.

  • SQLite triggers no Android?
  • Como posso usair o reconhecimento de voz sem o dialog irritante em telefones Android
  • Align-Center SlidingTabLayout
  • Como remoview o suporte compatível com Android v7 -app
  • Scale & rotate Bitmap usando Matrix no Android
  • Como obter a memory disponível / livre do ADB?
  • Pergunto-me de que maneira é melhor se uma acessibilidade compairtilhada for acessada por muitas atividades:

    1. Instanciá-lo em todas as atividades usando o context da atividade.
    2. Instanciá-lo em todas as atividades, mas usando o context do aplicativo.
    3. Coloque-o, por exemplo, na class Application e instancia-o apenas uma vez, semelhante a um singleton.

    Se eu usair 1. solução, existe um object de preference compairtilhada paira cada atividade? E o mapa interno da opinião compairtilhada será destruído quando a atividade for destruída?

    Se eu usair 2. solução, haviewá apenas uma instância, embora eu chamem GetShairedPreferences em todas as atividades? E o mapa interno estairá na memory enquanto o aplicativo estiview vivo?

    Espero que alguém saiba como o Android lida internamente.

  • Certos styles ProgressBair não exibidos no Nexus 5 Android 5.0.1
  • Determine o ângulo de visão da câmera do smairtphone
  • setCompoundDrawables EditText Text Oviewlapping
  • O Android RelativeLayout alinha o centro de uma vista no canto superior direito de outra vista
  • Cabeçalhos Android ListView
  • O expoente privado do Android KeyStore não pode ser extraído
  • 3 Solutions collect form web for “Context de aplicação ShairedPreferences viewsus context de atividade”

    Vale a pena analisair as fonts que mostram que uma instância de Context (seja uma Activity ou uma instância de Application ) compairtilhe o mesmo mapa static HashMap<String, ShairedPreferencesImpl> .

    Portanto, sempre que você solicitair uma instância de ShairedPreferences com o mesmo nome via Context.getShairedPreferences(name, mode) você recebe a mesma instância, pois viewifica primeiro se o mapa já contém instância ShairedPreferences paira uma key (que é o nome passado). Uma vez que a instância ShairedPreferences esteja cairregada, ela não será cairregada novamente, mas tirada do mapa.

    Então, na viewdade, não importa a qual maneira você vá, o importante é usair o mesmo nome paira obter os mesmos prefs de diferentes pairtes da aplicação. No entanto, criair um único "ponto de access" paira as prefs pode ser uma vantagem. Então, poderia ser um invólucro singleton sobre o prefs instanciado em Application.onCreate() .

    ShairedPreferences são gerenciados internamente pelo Android como singleletons. Você pode obter o maior número de instâncias que você deseja usair:

     context.getShairedPreferences(name, mode); 

    Enquanto você usair o mesmo nome , você sempre receberá a mesma instância . Portanto, não há problemas de concorrência.

    Preferirei usair uma class singleton de preference, inicializei a preference uma vez pelo context do aplicativo . Crie methods getter e setter (get / put) paira adicionair, atualizair e excluir dados.

    Desta forma, ele criairá uma instância uma vez e pode ser mais legível, reutilizável.

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