Toast e Intent , entrambi richiedono un riferimento al contesto . E getApplication , getApplicationContext , LoginActivity.this e getBaseContext , offrono tutti riferimento al contesto.
Ora la cosa che confonde è la dichiarazione di diversi contesti e il loro utilizzo specifico. Per rendere le cose semplici, dovresti contare due tipi di contesto disponibili nel framework Android.
- Contesto dell'applicazione
- Contesto dell'attività
Il contesto dell'applicazione è collegato al ciclo di vita dell'applicazione e sarà sempre lo stesso per tutta la vita dell'applicazione. Quindi, se si utilizza Toast , è possibile utilizzare il contesto dell'applicazione o anche il contesto dell'attività (entrambi) perché un avviso popup può essere generato da qualsiasi punto dell'applicazione e non è allegato a una finestra.
Il contesto dell'attività è collegato al ciclo di vita dell'attività e può essere distrutto se l'attività onDestroy()
viene aumentata. Se si desidera avviare una nuova attività, è necessario utilizzare il contesto dell'attività nel suo Intent in modo che la nuova attività di avvio sia collegata all'attività corrente (in termini di stack di attività). Tuttavia, è possibile utilizzare anche il contesto dell'applicazione per avviare una nuova attività, ma è necessario impostare un flag Intent.FLAG_ACTIVITY_NEW_TASK
con l'intento di trattarla come una nuova attività.
Facendo ora riferimento ai tuoi casi:
LoginActivity.this
sebbene si riferisca alla tua classe che estende la classe Activity, ma la classe base (Activity) estende anche la classe Context, quindi può essere utilizzata per offrire il contesto dell'attività.
getApplication()
sebbene si riferisca all'oggetto Application, ma la classe Application estende la classe Context, quindi può essere utilizzata per offrire il contesto dell'applicazione.
getApplicationContext()
offre il contesto dell'applicazione.
getBaseContext()
offre il contesto dell'attività.
Suggerimenti: ogni volta che devi manipolare, Views
vai su
Activity-Context , altrimenti sarebbe sufficiente Application-Context .