Contexto em um aplicativo Android

Contexto em um aplicativo Android


O que é contexto?


Como o nome indica, este é o contexto do estado atual do aplicativo ou objeto. Isso permite que objetos recém-criados entendam o que está acontecendo. Geralmente eles ligam para ele para obter informações sobre outra parte do programa.


Além disso, o Context é um guia para o sistema, pode fornecer recursos, acessar bancos de dados, preferências, etc. Aplicativos Android também têm Activity . É como explorar o ambiente em que seu aplicativo está sendo executado. Um objeto Activity herda um objeto Context . Permite acessar recursos e informações específicos sobre o ambiente do aplicativo.


Context presente em quase todos os lugares em um aplicativo Android e é a parte mais importante; portanto, você precisa entender como usá-lo corretamente.


O uso inadequado do Context pode facilmente levar a vazamentos de memória no aplicativo Android.


Existem muitos tipos diferentes de contextos, então vamos descobrir o que é cada um deles, como e quando usá-los corretamente.


Contexto do aplicativo


Essa é uma instância singleton (a única em todo o aplicativo) e pode ser acessada através da getApplicationContext() . Esse contexto está vinculado ao ciclo de vida do aplicativo. Um contexto de aplicativo pode ser usado onde você precisa de um contexto cujo ciclo de vida não esteja relacionado ao contexto atual ou quando precisa passar o contexto para fora da Activity .


Por exemplo, se você precisar criar um objeto singleton para seu aplicativo, e esse objeto precisar de algum contexto, sempre use o contexto do aplicativo.


Se você passar um contexto de Activity nesse caso, isso levará a um vazamento de memória, pois um objeto singleton manterá uma referência à Activity e não será destruído pelo coletor de lixo quando necessário.


No caso de você precisar inicializar uma biblioteca em uma Activity , sempre passe no contexto do aplicativo, não no contexto da Activity .


Portanto, getApplicationContext() deve ser usado quando se sabe que você precisa de um contexto para algo que possa viver mais do que qualquer outro contexto que você tenha à sua disposição.


Contexto da Atividade


Esse contexto é acessível em Activity e é anexado ao seu ciclo de vida. Um contexto de Activity deve ser usado quando você passa um contexto dentro de uma Activity ou precisa de um contexto cujo ciclo de vida esteja vinculado ao contexto atual.


getContext () no ContentProvider


Esse contexto é o contexto do aplicativo e pode ser usado de maneira semelhante ao contexto do aplicativo. Pode ser acessado através do método getContext() .


Quando não é possível usar getApplicationContext ()?


  • Este não é um contexto completo que suporta tudo o que uma Activity pode fazer. Algumas coisas que você tenta fazer com esse contexto falham, principalmente relacionadas à GUI.
  • Podem ocorrer vazamentos de memória se o contexto de getApplicationContext() mantido em algum objeto que você não limpará mais tarde. Se o contexto da Activity for mantido em algum lugar, assim que a Activity destruída pelo coletor de lixo, todo o resto também será destruído. O objeto Application permanece durante toda a vida do seu processo.

Regra prática


Na maioria dos casos, use um contexto acessível diretamente do componente em que você está trabalhando no momento. Você pode armazenar com segurança um link para ele se ele não exceder o ciclo de vida desse componente. Assim que você precisar salvar o link no contexto em um objeto que mora fora da sua Activity ou outro componente, mesmo que temporariamente, use o link no contexto do aplicativo.

Source: https://habr.com/ru/post/pt421115/


All Articles