BETA

Μαθαίνοντας το Android- UNDERSTANDING ACTIVITIES [Μαθήματα 7 & 8]

Εικόνα Michail

android-lessons
Συνέχεια μαθημάτων για το Android και σήμερα μιλάμε για UNDERSTANDING ACTIVITIES & Applying Styles and Themes to an Activity.

ANDROID LESSON 7 – UNDERSTANDING ACTIVITIES

Στο σημερινό σεμινάριο Android θα μιλήσουμε για τα activities. Ένα activity θεωρείται εκείνο το στοιχείο (και κατά συνέπεια το μέρος του κώδικα) το οποίο μας παρέχει τουλάχιστον μια αρχική οθόνη έτσι ώστε ο χρήστης να μπορεί να χρησιμοποιήσει την εφαρμογή όπως π.χ να στείλει ένα email, να βγάλει μια φωτογραφία κτλ. Κάθε activity προσφέρει ένα γραφικό περιβάλλον μέσα από το οποίο μας δίνονται οι επιλογές για το πρόγραμμα.

Κάθε εφαρμογή που δημιουργούμε αποτελείται από ένα τουλάχιστον activity ενώ επαγγελματικές εφαρμογές περιέχουν πολλά περισσότερα activities. Όσα activities και να έχουμε όμως πάντα ένα θεωρείται το κύριο activity το οποίο παρουσιάζεται στον χρήστη όταν ξεκινάει η εφαρμογή. Από εκεί και πέρα, κάθε activity μπορεί να καλέσει ένα άλλο activity αν το απαιτεί η εφαρμογή μας.

Κάθε φορά που ένα καινούργιο activity ξεκινάει το προηγούμενο activity σταματάει και το σύστημα σπρώχνει αυτό το activity στο stack. Το stack έχει τη λογική του “last in, first out”. Αυτό σημαίνει όταν το τρέχον activity ολοκληρώσει την λειτουργία του και εμείς πατήσουμε το back κουμπί, τότε το activity από το stack ξαναμπαίνει σε λειτουργία.

Τώρα όταν σταματήσουμε ένα activity επειδή ένα άλλο καινούργιο activity ξεκινάει, το παλιό activity ενημερώνεται για την αλλαγή της κατάστασής του μέσα από μια σειρά μεθόδων που ονομάζονται lifecycle callback methods. Υπάρχουν αρκετές μέθοδοι από τις οποίες ένα activity θα περάσει από την στιγμή που θα δημιουργηθεί μέχρι την στιγμή που θα καταστραφεί. Αυτές οι μέθοδοι αντιπροσωπεύουν τα stages μέσα από τις οποίες περνάει το activity στην διάρκεια λειτουργίας του. Ένας Android προγραμματιστής είναι σημαντικό να γνωρίζει αυτή την διαδικασία για να μπορεί να επέμβει σωστά και να χρησιμοποιήσει αυτές τις φάσεις του activity υπέρ του. Για παράδειγμα, όταν σταματάει ένα activity θα μπορούσαμε να ελευθερώσουμε εκείνη την στιγμή οτιδήποτε connections έχουμε πάνω σε μια βάση.

Στο πιο κάτω παράδειγμα δείχνουμε ένα απλό Android πρόγραμμα που έχουμε δημιουργήσει χωρίς να γράψουμε κώδικα. Απλά ακολουθούμε τα βήματα δημιουργίας μιας καινούργιας Android εφαρμογής όπως σας έχω δείξει μέσα από προηγούμενα μαθήματα Android.

pic_1

Για να δημιουργήσουμε ένα activity χρειάζεται να δημιουργήσουμε μια δική μας κλάση η οποία κάνει extends (κληρονομεί με άλλα λόγια) από την κλάση Activity. Αυτό ακριβώς έχει κάνει και το Eclipse όταν του ζητήσαμε να μας φτιάξει μια απλά εφαρμογή android.

Το activity που δημιουργήσαμε (που είναι και το μοναδικό εξ ορισμού) φορτώνει τα γραφικά του στοιχεία χρησιμοποιώντας το XML αρχείο που βρίσκεται μέσα στο res/layout φάκελο. Στο δικό μας παράδειγμα η γραμμή

setContentView(R.layout.activity_main)

ορίζει ότι το XML με το όνομα activity_main θα φορτωθεί για να μας παρουσιάσει τα γραφικό περιβάλλον που έχει οριστεί στο αρχείο που είναι το εξής:

pic_2

Τέλος ας μην ξεχνάμε ότι κάθε activity πρέπει να δηλώνεται και στο AndroidManifest.xml αρχείο.

pic_42

Κάθε activity κλάση ορίζει μια σειρά από events που καθορίζουν το lifecycle του activity. Πιο συγκεκριμένα η Activity κλάση ορίζει τα εξής events:

onCreate( ) – καλείται όταν ξεκινάει το activity την πρώτη φορά.

onStart( ) – καλείται όταν το activity γίνεται ορατό στον χρήστη.

onResume( ) – καλείται όταν το activity χρησιμοποιείται από τον χρήστη.

onPause( ) – καλείται όταν το τρέχον activity έχει γίνει pause και ένα προηγούμενο activity που ήταν σε αδράνεια έχει ξεκινήσει πάλι.

onStop( ) – καλείται όταν το activity δεν είναι πια ορατό στον χρήστη.

onDestroy( ) – καλείται όταν το activity έχει διαγραφεί από την μνήμη του συστήματος και στην ουσία δεν υφίσταται πια για το πρόγραμμα.

onRestart( ) – καλείται όταν το activity έχει σταματήσει και ξεκινάει πάλι.

Εξ ορισμού, το activity που δημιουργείται περιέχει το onCreate( ) event μέσα στο οποίο έχουμε γράψει τον κώδικα που παρουσιάζει τα γραφικά στην οθόνη μας. Το πιο κάτω σχεδιάγραμμα προέρχεται από το developer.android (http://developer.android.com/guide/components/activities.html) site και μας περιγράφει με γραφικό τρόπο όλες τις φάσεις που περνάει ένα activity από την στιγμή της δημιουργίας του μέχρι την διαγραφή του.

pic_4

Ο καλύτερος τρόπος όμως να καταλάβουμε τις διάφορες καταστάσεις του activity είναι να καλέσουμε και να υλοποιήσουμε προγραμματιστικά όλα τα events. Στην εφαρμογή που ήδη δημιουργήσαμε στην αρχή του σεμιναρίου android ερχόμαστε και συμπληρώνουμε τον εξής κώδικα:

pic_5

pic_6

Το πιο πάνω πρόγραμμα μπορείτε να το βρείτε και στο http://developer.android.com/guide/components/activities.html. Τρέχουμε την εφαρμογή και αλλάζουμε σε Debug perspective στο eclipse. Από το logcat θα μπορείτε να δείτε τα events του activity.

pic_7

Όταν τρέχετε την εφαρμογή στον emulator, χρησιμοποιήστε το back κουμπί, μετά το home κουμπί, και μετά το phone κουμπί για να εμφανιστούν οι διάφορες καταστάσεις στο logcat.

Αφού πειραματιστείτε λίγο, θα δείτε ότι ένα activity καταστρέφεται όταν πατάμε το back κουμπί. Αυτό είναι σημαντικό να το γνωρίζουμε γιατί οτιδήποτε πληροφορία έχει κρατήσει και γνωρίζει το activity μέχρι εκείνη την ώρα θα την χάσει. Οπότε ίσως χρειάζεται να γράψετε κώδικα να διατηρήσετε κάποιες πληροφορίες πριν καταστραφεί το activity. Η ερώτηση που ίσως έχετε είναι πότε και κάτω από ποιες συνθήκες μπορούμε να χρησιμοποιήσουμε αυτά τα events. Ένας μικρός και γρήγορος οδηγός είναι ο εξής:

onCreate( ) – εδώ μπορείτε να δημιουργήσετε αντικείμενα που θα χρησιμοποιήσετε στην εφαρμογή σας.

onResume( ) – εδώ μπορείτε να ξεκινήσετε κάποια services ή κάποιο κώδικα που χρειάζεται να τρέχει ενώ το τρέχον activity δεν είναι ορατό.

onPause( ) – από μπορούμε να σταματήσουμε services ή κάποιο κώδικα που δεν χρειάζεται να τρέχει όταν το τρέχον activity είναι ορατό.

onDestroy( ) – από εδώ ελευθερώνουμε ότι resources είχαμε χρησιμοποιήσει από το σύστημα.

Προσοχή σε μια τελευταία λεπτομέρεια. Αν και μια εφαρμογή περιέχει μόνο ένα activity το οποίο έχει σταματήσει, η εφαρμογή συνεχίζει να τρέχει στην μνήμη της συσκευής.

ANDROID LESSON 8 – Applying Styles and Themes to an Activity

Στο σημερινό σεμινάριο Android θα μιλήσουμε για τα themes που είναι διαθέσιμα στην συσκευή σας και εφαρμόζονται στα activities. Από την θεωρία γνωρίζουμε ότι ένα activity απασχολεί όλη την οθόνη όταν ξεκινάει. Μπορούμε όμως να εφαρμόσουμε ένα dialog theme έτσι ώστε το activity να παρουσιάζεται σαν floating dialog. Μπορείτε να βρείτε παράδειγμα κώδικα στο site του Android (http://developer.android.com/guide/topics/ui/themes.html).

Ένα καλό παράδειγμα χρήσης ενός dialog είναι όταν θέλετε να προειδοποιήσετε τον χρήστη μια πράξη ή επιλογή που πρόκειται να εκτελέσει. Με αυτό τον τρόπο τον ενημερώνετε τραβάτε την προσοχή του και μειώνετε την πιθανότητα της λάθος διαχείρισης της εφαρμογής.

Με βάση την θεωρία από το site του Android, μαθαίνουμε ότι για να εφαρμόσουμε ένα dialog theme σε ένα activity, τροποποιούμε το Activity στοιχείο μέσα στο AndroidManifest.xml αρχείο όπως δείχνει και η πιο κάτω εικόνα. Ενώ αν θέλαμε να εφαρμόσουμε το ίδιο theme για όλα τα activities μέσα σε μια εφαρμογή τότε θα τροποποιούσαμε το application στοιχείο.

pic_11

Ας δημιουργήσουμε μια Android εφαρμογή (ήδη γνωρίζετε τα βήματα) και ονομάστε την ActivityTheme. Απλά αλλάζουμε το AndroidManifest.xml αρχείο όπως δείχνει το πιο κάτω παράδειγμα και μετά τρέχουμε την εφαρμογή.

pic_21

pic_31

>>>Δείτε όλη την σειρά των μαθημάτων Android.

Μιχάλης Κασάπογλου(http://kassapoglou.com)

  • Σχόλια

0 Comments:

Scroll to Top