Quins són els components bàsics?
- Activity: Representa una pantalla amb interfície d'usuari.
- Exemple: de l'App de correu, la pantalla de redactar un correu
Service: S'executa en segon pla, per realitzar operacions de llarga durada o per realitzar treball provinent de processos diferents.
- Exemple: escoltar música sense tenir l'App en primer pla
Content Provider: Permet a altres Apps consultar o modificar les dades emmagatzemades en una altra App.
- Exemple: l'App de contactes integrada en Android permet que altres Apps hi tinguin accés, com Whatsup que pot afegir contactes o consultar-los d'allà
Broadcast Receiver: Respon a missatges difosos a tot el sistema. Es pot notificar a l'usuari mitjançant la barra de notificacions del sistema.
- Exemple: notificar a l'App que la bateria del dispositiu està baixa; o rebre missatges push i mostrar a l'usuari un missatge de rebut a la barra de notificacions
Tots s'han de declarar a l'AndroidManifest.xml.
Activity
És una cosa enfocada a allò que l'usuari pot fer (d'aquí que sigui una “Activitat”). Per la qual cosa interactua amb l'usuari directament. És la finestra que omple tota l'aplicació, que conté la interfície d'usuari. Si canviem de finestra canviarem d'Activity.
Es pot dividir en altres Activities més petites contingudes en una Activity?
No, d'això se n'encarreguen els Fragments.
Com se li associa un Layout?
Just després de la crida al pare del mètode onCreate() amb setContentView(R.layout.mi_layout)
Com s'obre una nova Activity?
Amb Context.startActivity(Intent miIntent) (Veurem això en profunditat més endavant)
Com es declara a l'AndroidManifest.xml?
Amb el tag <activity>
Com es comporta una Activity quan una altra la substitueix?
Quan una Activity s'inicia, comença al capdamunt de la pila d'Activity. L'Activity que està al capdamunt de la pila és la que s'està executant i mostrant a l'usuari. La resta d'Activities quedaran per sota a la pila. En el moment en què l'Activity del capdamunt es desapili (deixi d'existir; per exemple en prémer el botó d'“enrere”), la que està a sota serà la que ara ocupi el capdamunt de la pila i per tant la que estarà al davant de l'usuari.
Cicle de l'Activity:
Una Activity es caracteritza per tenir un cicle de vida. S'anomena igual que el cicle de vida d'un ésser viu, ja que són semblants: neix, creix, menja, es reprodueix i mor.
Suposem que tenim a la mà un dispositiu amb una aplicació iniciada. Per tant hi haurà una Activity en pantalla, que podrà seguir diversos camins durant la seva vida, com:
- Arrencar l'Activity: Passarà per Crear, Començar i Continuar, per arribar a l'execució normal.
- Utilitzar de manera normal l'Activity: estem a l'Activity pròpiament, estem en execució.
- S'ha obert una finestra emergent: Passarà per Pausar.
- Canviar a una altra Activity o bloquejar el mòbil: Passarà per Pausar i Aturar. (Nota aclaratòria: si es canvia a una altra Activity passa necessàriament per pausar i aturar, no ha hagut de sorgir una finestra emergent per passar per pausar, si es canvia d'Activity es passa per tots dos estats directament; això es dóna amb altres accions que passin per diversos estats).
- Apagar el mòbil: Passarà per Pausar, Aturar i Destruir.
El cicle de vida complet que hem vist al gràfic anterior es tradueix en el codi següent (Tots els mètodes són opcionals, tot i que es recomana utilitzar sempre l'onCreate()):
Activity amb tots els mètodes del seu cicle de vida
` public class miActividad extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Nuestro código a ejecutar en este momento } @Override public void onStart() { super.onStart(); //Nuestro código a ejecutar en este momento } @Override public void onRestart() { super.onRestart(); //Nuestro código a ejecutar en este momento } @Override public void onResume() { super.onResume(); //Nuestro código a ejecutar en este momento } @Override public void onPause() { super.onPause(); //Nuestro código a ejecutar en este momento } @Override public void onStop() { super.onStop(); //Nuestro código a ejecutar en este momento } @Override public void onDestroy() { super.onDestroy(); //Nuestro código a ejecutar en este momento } }`
