android-context understand - Che cos'è "Contesto" su Android?




get this (25)

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.

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.


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


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.


La classe android.content.Context fornisce la connessione al sistema Android e le risorse del progetto. È l'interfaccia per le informazioni globali sull'ambiente dell'applicazione.

Il contesto fornisce anche l'accesso ai servizi Android, ad esempio il servizio di localizzazione.

Attività e servizi estendono la classe Context .


Definizione del contesto

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

Termini più semplici (esempio 1)

  • 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 (esempio 2)

  • È 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 descriverlo: Considerare il contesto come remoto di una TV e canali nella televisione sono risorse, servizi, utilizzo di intenti ecc. - - - Qui il telecomando funge da accesso per ottenere l'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 ... Chiunque abbia accesso al remoto ha naturalmente accesso a tutte le cose come risorse, servizi, utilizzo di intenti ecc

Diversi metodi con cui è 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.


Context è una "interfaccia" per le informazioni globali su un ambiente applicativo. In pratica, Context è in realtà una classe astratta , la cui implementazione è fornita dal sistema Android.

Permette l'accesso a risorse e classi specifiche dell'applicazione, così come up-call per operazioni a livello di applicazione, come attività di lancio, trasmissione e ricezione di intenti, ecc.

Nella figura seguente, è possibile visualizzare una gerarchia di classi, dove Context è la classe radice di questa gerarchia. In particolare, vale la pena sottolineare che Activity è un discendente di Context .


Questo attributo dichiara a quale attività questo layout è associato per impostazione predefinita .


Contesto significa che Android conosce in quale attività devo agire o agire.

1 - Toast.makeText (context, "Enter All Details", Toast.LENGTH_SHORT) .show (); usato in questo Contesto contesto = ActivityName.this;

2 -startActivity (new Intent (context, LoginActivity.class));

in questo contesto significa da quale attività vuoi andare ad altre attività. contesto o ActivityName.questo è più veloce allora, getContext e getApplicatinContext.


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


Le istanze della classe android.content.Context forniscono 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.


Contesto in Android è un'interfaccia per le 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.


Il contesto è l'API specifica di Android per ogni Sandbox dell'app che fornisce dati privati ​​delle app di accesso come risorse, database, filedirectories privati, preferenze, impostazioni ...

La maggior parte dei privatedata è la stessa per tutte le attività / servizi / elenchi di trasmissione di un'applicazione.

Poiché Application, Activity, Service implementano l'interfaccia Context possono essere utilizzati dove una chiamata API richiede un parametro Context


Un Context Android è un'interfaccia (in senso generale, non in senso Java, in Java, Context è in realtà una classe astratta!) Che consente l'accesso a risorse specifiche dell'applicazione e classe e informazioni sull'ambiente dell'applicazione.

Se la tua app per Android era un'app Web, il tuo contesto sarebbe simile a ServletContext (non sto facendo un confronto esatto qui).

Le tue attività e i tuoi servizi estendono anche il Context , quindi ereditano tutti quei metodi per accedere alle informazioni sull'ambiente in cui è in esecuzione l'app.


Se vuoi collegare Context con altre classi familiari in Android, tieni presente questa struttura:

Contesto <ContextWrapper <Applicazione

Contesto <ContextWrapper <ContextThemeWrapper <Attività

Contesto <ContextWrapper <ContextThemeWrapper <Activity <ListActivity

Contesto <ContextWrapper <Servizio

Contesto <ContextWrapper <Servizio <IntentService

Quindi, tutte queste classi sono contesti a modo loro. È possibile trasmettere Service e ListActivity al contesto, se lo si desidera. Ma se si guarda da vicino, anche alcune delle classi ereditano il tema. Nell'attività o nel frammento, ti piacerebbe che il tema fosse applicato alle tue visualizzazioni, ma non ti preoccupare per questo . Classe di servizio , ad esempio.

Spiego here la differenza nei contesti.


Il contesto è un'interfaccia per le informazioni globali su un ambiente applicativo. È una classe astratta la cui implementazione è fornita dal sistema Android .

Context consente l'accesso a risorse e classi specifiche dell'applicazione, nonché chiamate per operazioni a livello di applicazione come launching activities, broadcasting and receiving intents, etc.

Ecco un esempio

 public class MyActivity extends Activity {

      public void Testing() {

      Context actContext = this; /*returns the Activity Context since   Activity extends Context.*/

      Context appContext = getApplicationContext();    /*returns the context of the single, global Application object of the current process. */

      Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
      Context BtnContext = BtnShowAct1.getContext();   /*returns the context of the View. */

Per maggiori dettagli è possibile visitare Context


È una classe astratta la cui implementazione è fornita dal sistema Android. Il contesto consente l'accesso a risorse e classi specifiche dell'applicazione, nonché chiamate per operazioni a livello di applicazione come attività di lancio, trasmissione e ricezione di intenti, ecc.


Mettiamola semplicemente:

Come suggerisce il nome, è il contesto dello stato corrente dell'applicazione / oggetto. Permette agli oggetti appena creati di capire cosa sta succedendo. Normalmente lo chiami per ottenere informazioni su un'altra parte del tuo programma (attività e pacchetto / applicazione).

È possibile ottenere il contesto richiamando getApplicationContext() , getContext() , getBaseContext() o this (quando in una classe che si estende da Context , come le classi Application, Activity, Service e IntentService).

Usi tipici del contesto:

  • Creazione di nuovi oggetti : creazione di nuove viste, adattatori, ascoltatori:

    TextView tv = new TextView(getContext());
    ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
    
  • Accesso alle risorse comuni standard : servizi come LAYOUT_INFLATER_SERVICE, SharedPreferences:

    context.getSystemService(LAYOUT_INFLATER_SERVICE)
    getApplicationContext().getSharedPreferences(*name*, *mode*);
    
  • Accesso implicito ai componenti : per quanto riguarda i fornitori di contenuti, le trasmissioni, l'intento

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

Contextsignifica corrente. Contextutilizzare per fare operazione per la schermata corrente. ex.
1. getApplicationContext ()
2. getContext ()

Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();

Contextsignifica componente (o applicazione) in vari periodi di tempo. Se mangio così tanto cibo tra l'1 e le 2 del pomeriggio, il mio contesto di quel tempo viene usato per accedere a tutti i metodi (o risorse) che uso in quel periodo. Il contenuto è un componente (applicazione) per un particolare momento. Contextdei componenti dell'applicazione continua a cambiare in base al ciclo di vita sottostante dei componenti o dell'applicazione. Ad esempio, all'interno di onCreate () di a Activity,

getBaseContext()- dà il contextdi Activityciò che è impostato (creato) dal costruttore di attività. getApplicationContext()- fornisce il Contextsetup (creato) durante la creazione dell'applicazione.

Nota: <application>contiene tutti i componenti Android.

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

    <service>  .. </service>

    <receiver> .. </receiver>

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

Significa che quando chiamate getApplicationContext()da qualsiasi componente, chiamate il contesto comune dell'intera applicazione.

Context continua a essere modificato dal sistema in base al ciclo di vita dei componenti.


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

Boss Assistant Analogy

Lasciamo una piccola analogia prima di immergerci in profondità nella tecnicità di Context

Ogni boss ha un assistente o qualcuno (fattorino) che fa cose meno importanti e che richiedono più tempo per lui. Ad esempio, se hanno bisogno di un file o di un caffè, un assistente sarà di corsa. Boss non saprà cosa sta succedendo in background ma il file o l'attività saranno consegnati

Ecco
Boss - Applicazione Android
Assistente - Contesto
File o tazza di caffè - Risorsa

Che sito ufficiale di sviluppatori Android dice di Context

Il contesto è il punto di accesso per le risorse relative alle applicazioni

Vediamo alcune di tali risorse o attività

  • Avvio di un'attività.

  • Ottenere il percorso assoluto per la directory della cache specifica dell'applicazione sul filesystem.

  • Determinare se l'autorizzazione concessa è consentita per un particolare processo e ID utente in esecuzione nel sistema.

  • Verifica se ti è stata concessa una particolare autorizzazione.

E così via.
Quindi, se un'applicazione Android vuole avviare un'attività, passa direttamente a Context (Access Point), e la classe Context gli restituisce le risorse (In questo caso, Intent).

Come ogni altra classe, anche la classe Context ha campi e metodi.
Puoi esplorare di più su Context nella documentazione ufficiale, copre praticamente tutto, metodi disponibili, campi e persino come utilizzare i campi con i metodi.


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).


  • Il contesto rappresenta un handle per ottenere dati sull'ambiente.
  • La classe di contesto stessa è dichiarata come astratta, la cui implementazione è fornita dal sistema operativo Android.
  • Il contesto è come remoto di una TV e i canali della televisione sono risorse, servizi, ecc.

Cosa puoi fare con questo?

  • Carico di risorse.
  • Avvio di una nuova attività.
  • Creazione di viste.
  • Ottenere il servizio di sistema.

Modi per ottenere il contesto:

  • getApplicationContext()
  • getContext()
  • getBaseContext()







android android-context