Che cos'è "Contesto" su Android?


Answers

Definizione del contesto ::

  • Il contesto rappresenta i dati dell'ambiente
  • Fornisce l'accesso a cose come i database

Termini più semplici ::

  • Considera Person-X è il CEO di una società di software di start-up.

  • Nell'azienda è presente un architetto di punta, questo lead architect svolge tutto il lavoro in azienda che comprende database, interfaccia utente, ecc.

  • Ora il CEO assume un nuovo sviluppatore.

  • È l'Architetto che racconta la responsabilità della persona appena assunta in base alle capacità della nuova persona che se lavorerà al Database o all'interfaccia utente ecc.

Termini più semplici ::

  • È come l'accesso all'attività di Android alla risorsa dell'app.

  • È simile a quando si visita un hotel, si desidera colazione, pranzo e cena nei tempi adeguati, giusto?

  • Ci sono molte altre cose che ti piacciono durante il soggiorno. Come ottieni queste cose?

  • Chiedi alla persona del servizio in camera di portare queste cose per te.

  • Qui la persona del servizio in camera è il contesto che considera la singola attività e l'hotel come app, infine la colazione, il pranzo e la cena devono essere le risorse.

Le cose che coinvolgono il contesto sono:

  1. Caricamento di una risorsa.
  2. Avvio di una nuova attività.
  3. Creazione di viste.
  4. ottenere il servizio di sistema.

Il contesto è la classe base per Attività , Servizio , Applicazione .... ecc

Un altro modo per descrivere questo: Considerare il contesto come remoto di una TV e canali nella televisione sono risorse, servizi, utilizzo di intenti ecc. - - - Qui il telecomando agisce come accesso per ottenere accesso a tutte le diverse risorse in primo piano.

  • Quindi, Remote ha accesso a canali come risorse, servizi, utilizzo di intenti, ecc ....
  • Allo stesso modo ..... Chi ha accesso al telecomando ha naturalmente accesso a tutte le cose come risorse, servizi, utilizzo di intenti, ecc

Diversi metodi di invocazione grazie ai quali è possibile ottenere il contesto

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • o this (quando nella classe di attività)

Esempio:

TextView TV=new TextView(this);

this -> si riferisce al contesto dell'attività corrente.

Question

Nella programmazione Android, cos'è esattamente una classe Context e a cosa serve?

L'ho letto sul sito degli sviluppatori, ma non riesco a capirlo chiaramente.




Il contesto è istanze della classe android.content.Context fornisce la connessione al sistema Android che esegue l'applicazione. Ad esempio, è possibile controllare le dimensioni della visualizzazione corrente del dispositivo tramite il contesto.

Dà inoltre accesso alle risorse del progetto. È l'interfaccia per le informazioni globali sull'ambiente dell'applicazione.

La classe Context fornisce anche l'accesso ai servizi Android, ad esempio il gestore degli allarmi per attivare eventi basati sul tempo.

Attività e servizi estendono la classe Context. Pertanto possono essere utilizzati direttamente per accedere al contesto.




Context means component (or application) in various time-period. If I do eat so many food between 1 to 2 pm then my context of that time is used to access all methods (or resources) that I use during that time. Content is an component (application) for particular time. Context of components of application keeps changing based on the underlying lifecycle of the components or application. For instance, inside the onCreate() of an Activity ,

getBaseContext() -- gives the context of the Activity that is set (created) by the constructor of activity. getApplicationContext() -- gives the Context setup (created) during the creation of application.

Note: <application> holds all Android Components.

<application>
    <activity> .. </activity> 

    <service>  .. </service>

    <receiver> .. </receiver>

    <provider> .. </provider>
</application> 

It means, when you call getApplicationContext() from inside whatever component, you are calling the common context of the whole application.

Context keeps being modified by the system based on the lifecycle of components.




In Java, we say this keyword refers to the state of the current object of the application.
Similarly, in an alternate we have Context in Android Development.

This can be defined either explicitly or implicitly,

Context con = this;

getApplicationContext();

getBaseContext();

getContext();



Mettendo semplice, Androids Context è un disastro che non amerai finché non ti fermerai a preoccuparti.

I Context Android sono:

  • Dio-oggetti.

  • Cosa vuoi che passi intorno a tutte le tue applicazioni quando inizi a sviluppare per Android, ma eviterai di farlo quando ti avvicini un po 'alla programmazione, al testing e ad Android stesso.

    • Dipendenza non chiara

    • Fonte comune di perdite di memoria.

    • PITA per i test.

  • Contesto effettivo utilizzato dal sistema Android per inviare autorizzazioni, risorse, preferenze, servizi, trasmissioni, stili, visualizzazione di finestre di dialogo e layout di gonfiaggio. E hai bisogno di diverse istanze di Context per alcune cose separate (ovviamente, non puoi mostrare una finestra di dialogo da un contesto di applicazione o servizio; i layout gonfiati dai contesti di applicazioni e attività possono essere diversi).




Un Context è ciò che molti di noi chiamerebbero Applicazione . È realizzato dal sistema Android ed è in grado di fare solo ciò che un'applicazione è in grado di fare. In Tomcat, anche Context è quello che chiamerei un'applicazione.

C'è un contesto che contiene molte attività, ciascuna attività può avere molte viste.

Ovviamente, alcuni diranno che non si adatta a causa di questo o quello e probabilmente hanno ragione, ma dicendo che un contesto è la tua attuale applicazione ti aiuterà a capire cosa stai mettendo nei parametri del metodo.




Interfaccia con informazioni globali su un ambiente applicativo. Questa è una classe astratta la cui implementazione è fornita dal sistema Android. Permette l'accesso a risorse e classi specifiche dell'applicazione, nonché up-call per operazioni a livello di applicazione come attività di lancio, trasmissione e ricezione di intenti, ecc.




Context is context of current state of the application/object. Its an entity that represents various environment data. Context helps the current activity to interact with out side Android Environment like local files, databases, class loaders associated to the environment, services including system-level services, and more.

A Context is a handle to the system. It provides services like resolving resources, obtaining access to databases and preferences, and so on. An android app has activities. It's like a handle to the environment your application is currently running in. The activity object inherits the Context object. Examples for uses of context :

  1. Creating New objects: Creating new views, adapters, listeners

    TextView tv = new TextView(getContext());
    ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
    
  2. Accessing Standard Common Resources: Services like LAYOUT_INFLATER_SERVICE, SharedPreferences:

    context.getSystemService(LAYOUT_INFLATER_SERVICE) 
    getApplicationContext().getSharedPreferences(*name*, *mode*);
    
  3. Accessing Components Implicitly: Regarding content providers, broadcasts, intent

    getApplicationContext().getContentResolver().query(uri, ...);
    

Difference between Activity Context and Application Context :

They are both instances of Context , but the application instance is tied to the lifecycle of the application, while the Activity instance is tied to the lifecycle of an Activity. Thus, they have access to different information about the application environment.

If you read the docs at getApplicationContext it notes that you should only use this if you need a context whose lifecycle is separate from the current context.

But in general, use the activity context unless you have a good reason not to.

Need of Context :

The documentation says that every view needs the context to access the right resources (eg the theme, strings etc.).

But why in the constructor and not through setContentView(View)?

1.Because the resources must be accessible while the view is being constructed (the constructor will need some resources to fully initialise the view).

2.This allows the flexibility of using a context that is different from the one of the current activity (imagine a view that uses some other string resources and not the ones from the current activity).

3.The designers of the Android SDK seem to have chosen that the context must be set only once and then stay the same throughout the lifetime of the view. Why context is not determined automatically at construction point?

1.Because there exists no static variable that would tell you the current global context of your application. The method getApplicationContext() is the closest to this, but it's not static, so you need an instance of the Activity object to call it.

2.The Java language provides an option to look through the call stack and find whether the View has been constructed in a Context class. But what if there are many? Or what if there are none? This method is very expensive and error prone. So the designers of the API decided that a context must be manually provided.




Il contesto è fondamentalmente per l'accesso alle risorse e ottenere i dettagli dell'ambiente dell'applicazione (per il contesto dell'applicazione) o dell'attività (per il contesto di attività) o qualsiasi altro ...

Per evitare perdite di memoria, dovresti utilizzare il contesto dell'applicazione per ogni componente che necessita di un oggetto di contesto .... per ulteriori informazioni clicca here




ANDROID E CONTESTO Se guardi attraverso le varie API di Android, noterai che molti di loro accettano un oggetto android.content.Context come parametro. Vedrai anche che un'attività o un servizio vengono solitamente utilizzati come contesto. Questo funziona perché entrambe le classi si estendono dal contesto.

Cos'è esattamente il contesto? Secondo la documentazione di riferimento Android, è un'entità che rappresenta vari dati ambientali. Fornisce accesso a file locali, database, caricatori di classe associati all'ambiente, servizi inclusi servizi a livello di sistema e altro. In questo libro e nella tua codifica quotidiana con Android, vedrai il contesto distribuito frequentemente. Da: libro "Android in Practice".




Consideralo come la VM che ha disattivato il processo in cui l'app o il servizio è in esecuzione. L'ambiente silente ha accesso a una serie di informazioni di sistema sottostanti e ad alcune risorse consentite. Hai bisogno di quel contesto per ottenere quei servizi.




Context in Android is an interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.




Un contesto è un handle per il sistema; fornisce servizi come la risoluzione delle risorse, l'accesso ai database e alle preferenze e così via. Un'app per Android ha attività. Il contesto è come un handle per l'ambiente in cui è attualmente in esecuzione l'applicazione. L'oggetto activity eredita l'oggetto Context.

Per ulteriori informazioni, guarda in Introduzione allo sviluppo Android con Android Studio - Tutorial .




Semplice esempio per capire il context in Android:

Ogni capo ha un assistente da seguire, per svolgere tutte le attività meno importanti e dispendiose in termini di tempo. Se è necessario un file o una tazza di caffè, l'assistente è in fuga. Alcuni capi sanno a malapena cosa sta succedendo in ufficio, così chiedono ai loro assistenti anche questo. Fanno un po 'di lavoro da soli ma per la maggior parte delle altre cose hanno bisogno dell'aiuto dei loro assistenti.

In questo scenario,

Boss - è l'applicazione Android

Assistente - è contesto

File / tazza di caffè - sono risorse

Generalmente chiamiamo contesto quando abbiamo bisogno di ottenere informazioni su diverse parti della nostra applicazione come Attività, Applicazioni, ecc.

Alcune operazioni (cose in cui è necessario l'assistente) in cui è coinvolto il contesto:

Caricamento di risorse comuni Creazione di viste dinamiche Visualizzazione di messaggi Toast Lancio di attività ecc. Diversi modi di ottenere il contesto:

getContext()

getBaseContext()

getApplicationContext()

this



Contesto è un riferimento all'oggetto corrente come questo. Anche il contesto consente l'accesso alle informazioni sull'ambiente dell'applicazione.




Related