Che cos'è un intento in Android?


347
  • Che cos'è un intento in Android?
  • Qualcuno può elaborare con un esempio?
  • Quali sono i tipi di Intenti e perché li stiamo usando?
  • Perché gli Intenti sono così importanti in Android?

Come Windows, che è un sistema operativo basato su messaggi e notifica l'input dell'utente al programma con l'invio di un messaggio, Android utilizza l'intenzione di farlo!
AminM,

Risposte:


486

Un Intento è una "intenzione" di compiere un'azione; in altre parole,

un oggetto di messaggistica che è possibile utilizzare per richiedere un'azione da un altro componente dell'app

Un Intento è fondamentalmente un messaggio per dire che hai fatto o vuoi che succedesse qualcosa. A seconda dell'intento, le app o il sistema operativo potrebbero ascoltarlo e reagire di conseguenza. Pensala come una e-mail esplosiva a un gruppo di amici, in cui dici al tuo amico John di fare qualcosa, o agli amici che possono fare X ( "filtri di intenti" ), per fare X. Le altre persone ignoreranno l'e-mail, ma John (o gli amici che possono fare X) reagiranno ad esso.

Per ascoltare un intento di trasmissione (come il telefono che squilla o viene ricevuto un SMS), si implementa un ricevitore di trasmissione , al quale verrà passato l'intento. Per dichiarare che puoi gestire l'intento di un'altra app come "scatta foto", dichiari un filtro di intenti nel file manifest della tua app .

Se vuoi far scattare un'intenzione di fare qualcosa, come far apparire il dialer, spegni un'intenzione dicendo che lo farai.


1
@Chirag Raval Qual è la differenza tra un intento e un ascoltatore di azioni?
Mayooran,

1
Potresti spiegare di nuovo l'ultima frase? Se vuoi sparare ..
Shafizadeh

1
Simile ai delegati C #?
Paul,

In realtà un'azione significa che puoi avviare un componente da un altro componente usando un Intento. Questo è ciò per cui è principalmente utilizzato.
Sreekanth Karumanaghat,

Anche per aggiungere a questo ... L'intento è asincrono.
Sreekanth Karumanaghat

165

Che cos'è un intento?

Un Intento è fondamentalmente un messaggio che viene passato tra i componenti (come Attività , Servizi, Ricevitori di trasmissione e Fornitori di contenuti ). Quindi, è quasi equivalente ai parametri passati alle chiamate API. Le differenze fondamentali tra chiamate API e invocazione di componenti tramite intenti sono:

  • Le chiamate API sono sincrone mentre le chiamate basate su intenti sono asincrone.
  • Le chiamate API sono in fase di compilazione mentre le chiamate basate su intenti sono in fase di runtime.

Naturalmente, gli Intenti possono essere fatti funzionare esattamente come le chiamate API usando quelli che sono chiamati Intenti espliciti, che verranno spiegati in seguito. Ma il più delle volte, gli intenti impliciti sono la strada da percorrere e questo è ciò che viene spiegato qui.

Un componente che vuole invocare un altro deve solo esprimere il suo intento di fare un lavoro. E qualsiasi altro componente che esiste e ha affermato che può fare un simile lavoro attraverso i filtri di intenti , viene invocato dalla piattaforma Android per eseguire il lavoro. Ciò significa che nessuno dei due componenti è a conoscenza dell'esistenza reciproca ma può comunque collaborare per fornire il risultato desiderato all'utente finale.

Questa connessione invisibile tra i componenti è ottenuta attraverso la combinazione di intenti, filtri di intenti e la piattaforma Android.

Questo porta a enormi possibilità come:

  • Mescola e abbina o piuttosto plug and play di componenti in fase di esecuzione.
  • Sostituzione delle applicazioni Android integrate con applicazioni sviluppate su misura.
  • Riutilizzo a livello di componente all'interno e tra le applicazioni.
  • Orientamento del servizio al livello più granulare, se posso dire.

Ecco ulteriori dettagli tecnici sugli Intenti dalla documentazione di Android .

Un intento è una descrizione astratta di un'operazione da eseguire. Può essere utilizzato con startActivity per avviare un'attività , broadcastIntent per inviarlo a qualsiasi componente BroadcastReceiver interessato e startService (Intent) o bindService (Intent, ServiceConnection, int) per comunicare con un servizio in background.

Un intento fornisce una funzione per eseguire l'associazione in fase di runtime tra il codice in diverse applicazioni. Il suo uso più significativo è nel lancio di attività, dove può essere pensato come la colla tra le attività. È fondamentalmente una struttura di dati passivi che contiene una descrizione astratta di un'azione da eseguire. Le informazioni primarie in un intento sono:

  • azione L' azione generale da eseguire, come ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, ecc.
  • dati I dati su cui operare, come un record personale nel database dei contatti, espressi come Uri.

Per saperne di più


4
Apprezzo l'uso dei concetti di informatica in questa spiegazione. Ciò rende la discussione più concreta e particolarmente utile per i lettori con una solida laurea in informatica.
Donal Lafferty,

49

Gli intenti sono un modo per dire ad Android cosa vuoi fare . In altre parole, descrivi la tua intenzione. Gli intenti possono essere utilizzati per segnalare al sistema Android che si è verificato un determinato evento. Altri componenti in Android possono registrarsi a questo evento tramite un filtro intenti.

Di seguito sono riportati 2 tipi di intenti

1. Intenzioni esplicite

usato per chiamare un componente specifico. Quando sai quale componente vuoi avviare e non vuoi dare all'utente il controllo gratuito su quale componente usare. Ad esempio, hai un'applicazione che ha 2 attività. Attività A e attività B. Si desidera avviare l'attività B dall'attività A. In questo caso, si definisce un intento esplicito mirato all'attività B e quindi lo si utilizza per chiamarlo direttamente.

2. Intenti espliciti

usato quando hai un'idea di cosa vuoi fare, ma non sai quale componente dovrebbe essere lanciato. Oppure, se si desidera offrire all'utente un'opzione per scegliere tra un elenco di componenti da utilizzare. Se questi Intenti vengono inviati al sistema Android, cerca tutti i componenti che sono registrati per l'azione specifica e il tipo di dati. Se viene trovato un solo componente, Android avvia direttamente il componente. Ad esempio, hai un'applicazione che utilizza la fotocamera per scattare foto. Una delle funzionalità della tua applicazione è quella di dare all'utente la possibilità di inviare le foto che ha scattato. Non sai che tipo di applicazione ha l'utente che può inviare foto e vuoi anche dare all'utente la possibilità di scegliere quale applicazione esterna usare se ne ha più di una. In questo caso non useresti un intento esplicito.

Un intento esplicito viene sempre consegnato al suo obiettivo, indipendentemente da ciò che contiene; il filtro non è consultato. Ma un intento implicito viene consegnato a un componente solo se può passare attraverso uno dei filtri del componente

Filtri di intenti

Se un Intenti viene inviato al sistema Android, determinerà le applicazioni adatte per questi Intenti. Se sono stati registrati diversi componenti per questo tipo di Intenti, Android offre all'utente la possibilità di aprirne uno.

Questa determinazione si basa su IntentFilters. Un IntentFilters specifica i tipi di intento a cui può rispondere un'attività, un servizio o un ricevitore Bcastcast. Un filtro intento dichiara le capacità di un componente. Specifica cosa può fare anattività o servizio e quali tipi di trasmissioni è in grado di gestire un ricevitore. Consente al componente corrispondente di ricevere Intenti del tipo dichiarato. I filtri Intent sono in genere definiti tramite il file AndroidManifest.xml. Per BroadcastReceiver è anche possibile definirli in codice. Un IntentFilters è definito dalla sua categoria, azione e filtri dati. Può contenere anche metadati aggiuntivi.

Se un componente non definisce un filtro Intenti, può essere chiamato solo da Intenti espliciti.

Di seguito sono 2 modi per definire un filtro

File 1.Manifest

Se si definisce il filtro di intenti nel manifest, l'applicazione non deve essere in esecuzione per reagire agli intenti definiti nel suo filtro. Android registra il filtro quando viene installata l'applicazione.

Ricevitore 2.BroadCast

Se si desidera che il proprio destinatario della trasmissione riceva l'intento solo quando l'applicazione è in esecuzione. Quindi dovresti definire il tuo filtro di intento durante il runtime (programmaticamente). Tieni presente che questo funziona solo per i ricevitori broadcast.


12

Dopo aver scritto una singola attività, è necessario passare a un'altra attività per eseguire un'altra attività con o senza informazioni dalla prima attività.

La piattaforma Android consente la transizione tramite Intent Interface.

Le parole sono prese da qui: usando Intent Demo e ti suggerisco di passare attraverso questo esempio perché hanno anche fornito un file di codice. così puoi usarlo e capire facilmente lo stesso.


Gli intenti vanno oltre la transizione tra le attività. Sarebbe più utile dare una panoramica.
Vaddadi Kartick,

@KartickVaddadi Accetto il tuo punto. Questa era la mia risposta per il solo uso di Intent!
Paresh Mayani,

Paresh, il link blog.vimviv.com/android/intent-android non funziona più :(
user2060383

9

Intento Android

Android Intent ti consente di spostarti da un'attività Android a un'altra. Con esempi, questo tutorial parla anche di vari tipi di intenti Android.

Android Intent può essere definito come un semplice oggetto messaggio utilizzato per comunicare da un'attività a un'altra.

Gli intenti definiscono l'intenzione di un'applicazione. Sono inoltre utilizzati per trasferire dati tra attività.

Un Intento Android può essere utilizzato per eseguire le seguenti 3 attività:

  1. Apri un'altra attività o servizio dall'attività corrente
  2. Passa i dati tra attività e servizi
  3. Delegare la responsabilità a un'altra domanda. Ad esempio, è possibile utilizzare Intenti per aprire l'applicazione browser per visualizzare un URL.

L'intenzione può essere ampiamente classificata in 2 categorie. Non ci sono parole chiave per questa categoria e solo un'ampia classificazione di come vengono utilizzati gli intenti Android.

Intento Android esplicito

L'intento Android esplicito è l'intento in cui si definisce esplicitamente il componente che deve essere chiamato dal sistema Android.

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

Intento Android implicito

Intenti Android impliciti è l'intento in cui invece di definire i componenti esatti, si definisce l'azione che si desidera eseguire. La decisione di gestire questa azione è lasciata al sistema operativo. Il sistema operativo decide quale componente è meglio eseguire per scopi impliciti. Vediamo un esempio:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

Per ulteriori informazioni è possibile visitare di seguito

http://developer.android.com/reference/android/content/Intent.html


9

Secondo la loro documentazione:

Un intento è un oggetto che fornisce un'associazione di runtime tra componenti separati (come due attività). L'intento rappresenta "l'intenzione di fare qualcosa" di un'app. Puoi utilizzare gli intenti per un'ampia varietà di attività, ma molto spesso vengono utilizzati per iniziare un'altra attività.

Ecco il link con l'esempio: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Come descrive il documento, al fine di avviare un'attività (è necessario anche comprendere quale sia l'attività) utilizzare l'intento come di seguito

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

8

Un intento è una descrizione astratta di un'operazione da eseguire. Può essere utilizzato con startActivity per avviare un'attività, broadcastIntent per inviarlo a qualsiasi componente BroadcastReceiver interessato e startService (Intent) o bindService (Intent, ServiceConnection, int) per comunicare con un servizio in background.

Per maggiori dettagli vedi questi link:

1). http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3). http://www.vogella.de/articles/AndroidIntent/article.html

ci sono molti altri articoli disponibili.


5

che cos'è l'intento?

È un tipo di messaggio o informazione che viene passato ai componenti. Viene utilizzato per avviare un'attività, visualizzare una pagina Web, inviare sms, inviare e-mail, ecc.

Esistono due tipi di intenti in Android:

Intento implicito Intento
esplicito

L' intento implicito viene utilizzato per invocare i componenti di sistema

Esempio

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));

startActivity(i);

L' intento esplicito viene utilizzato per invocare la classe di attività.

Esempio

Intent intent = newIntent (this, SecondActivity.class);

startActivity(intent);

puoi leggere di più

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html


2

Un Intento è una classe, che lega le informazioni per compiere alcune azioni.

esempio: passare i dati da un'attività a un'altra attività quando l'utente esegue tali azioni

attività presente.


1

In una visione ampia, possiamo definire Intent come

Quando un'attività vuole iniziare un'altra attività, crea un oggetto chiamato Intent che specifica quale attività desidera iniziare.


0

Un'applicazione Android può contenere zero o più attività. Quando l'applicazione ha più di un'attività, spesso è necessario spostarsi da una all'altra. In Android, navighi tra le attività attraverso ciò che è noto come un intento. È possibile passare alcuni dati all'attività che si desidera avviare attraverso l'intento, utilizzando putExtra ().


0

Dal collegamento cartaceoDeep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013

L'intento è compreso in alcune righe piccole ma efficaci

  1. Android supporta una semplice forma di IPC (comunicazione tra processi) tramite intenti
  2. La messaggistica intensiva è un framework per la comunicazione asincrona tra i componenti Android (attività, servizio, provider di contenuti, ricevitore di trasmissione)
  3. Tali componenti possono essere eseguiti nelle stesse o tra app diverse (ad es. Processi)
  4. Abilita sia i domini di messaggistica di abbonamento point-to-point che quelli di pubblicazione
  5. L'intento stesso rappresenta un messaggio contenente la descrizione dell'operazione da eseguire nonché i dati da trasmettere ai destinatari.

Da questa discussione una semplice risposta dell'architetto androide Dianne Hackborn la afferma come una data containerrealtà.

Dal punto di vista dell'architettura Android :

Intent è un contenitore di dati utilizzato per la comunicazione tra processi. È costruito sulla base Binderdell'architettura Android.


0

Gli intenti vengono utilizzati per avviare un'altra attività da un'attività e vengono sostanzialmente utilizzati per diversi scopi, come l'invio di dati a un'altra attività da un'attività e per l'attivazione.

Sono fondamentalmente di due tipi

  1. Intenzioni implicite.

  2. Intenzioni esplicite.

Come principiante lo so molto, penso che questo darà un'idea di base sugli intenti di Android


2
Per favore, leggi questo link su come rispondere alle domande.
Bonatti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.