Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές 2 ο μέρος: Android ΠΜΣ: Τεχνολογίες Υπολογισμού και Δικτύων Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Αθήνας.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές 2 ο μέρος: Android ΠΜΣ: Τεχνολογίες Υπολογισμού και Δικτύων Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Αθήνας."— Μεταγράφημα παρουσίασης:

1 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές 2 ο μέρος: Android ΠΜΣ: Τεχνολογίες Υπολογισμού και Δικτύων Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Αθήνας

2 Τι είναι το Android  To Android είναι ένα ανοιχτού κώδικα Linux- based Λειτουργικό Σύστημα για κινητές συσκευές (smartphones and tablet computers).  Ανα π τύχθηε α π ό την Open Handset Alliance, υ π ό την καθοδήγηση της Google, και άλλων εταιριών.  Το Android π ροσφέρει μία ενο π οιημένη π ροσέγγιση για την ανά π τυξη εφαρμογών για κινητές συσκευές.  Η π ρώτη beta version του Android Software Development Kit (SDK) διανεμήθηκε α π ό την Google το 2007 και το Android 1.0 διανεμήθηκε το Σε π τέμβρη του Δίκτυα Κινητών Ε π ικοινωνιών και Εφαρμογές – Android 2

3 Χαρακτηριστικά του Android FeatureDescription Beautiful UIAndroid OS basic screen provides a beautiful and intuitive user interface. ConnectivityGSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC and WiMAX. StorageSQLite, a lightweight relational database, is used for data storage purposes. Media supportH.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, AAC 5.1, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, and BMP MessagingSMS and MMS Web browserBased on the open-source WebKit layout engine, coupled with Chrome's V8 JavaScript engine supporting HTML5 and CSS3. Multi-touchAndroid has native support for multi-touch which was initially made available in handsets such as the HTC Hero. Multi-taskingUser can jump from one task to another and same time various application can run simultaneously. Resizable widgetsWidgets are resizable, so users can expand them to show more content or shrink them to save space Multi-LanguageSupports single direction and bi-directional text. GCMGoogle Cloud Messaging (GCM) is a service that lets developers send short message data to their users on Android devices, without needing a proprietary sync solution. Wi-Fi DirectA technology that lets apps discover and pair directly, over a high-bandwidth peer-to-peer connection. Android BeamA popular NFC-based technology that lets users instantly share, just by touching two NFC- enabled phones together. Δίκτυα Κινητών Ε π ικοινωνιών και Εφαρμογές – Android 3

4 Ιστορία του Android Δίκτυα Κινητών Ε π ικοινωνιών και Εφαρμογές – Android 4

5 Ε π ί π εδο API Platform VersionAPI LevelVERSION_CODE Android 5.122LOLLIPOP_MR1 Android 5.021LOLLIPOP Android 4.4W20KITKAT_WATCHKitKat for Wearables Only Android 4.419KITKAT Android 4.318JELLY_BEAN_MR2 Android 4.2, JELLY_BEAN_MR1 Android 4.1, JELLY_BEAN Android 4.0.3, ICE_CREAM_SANDWICH_MR 1 Android 4.0, 4.0.1, ICE_CREAM_SANDWICH Android 3.213HONEYCOMB_MR2 Android 3.1.x12HONEYCOMB_MR1 Android 3.0.x11HONEYCOMB Android Android GINGERBREAD_MR1 Android Android Android 2.3 9GINGERBREAD Android 2.2.x8FROYO Android 2.1.x7ECLAIR_MR1 Android ECLAIR_0_1 Δίκτυα Κινητών Ε π ικοινωνιών και Εφαρμογές – Android 5

6 6 Περιγραφή της αρχιτεκτονικής Android software stack  Δομείται στη μορφή μίας στοίβας που περιλαμβάνει εφαρμογές, το λειτουργικό σύστημα, περιβάλλον run- time, ενδιάμεσο λογισμικό, υπηρεσίες και βιβλιοθήκες

7 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 7 Linux Kernel  Παρέχει ένα αφαιρετικό επίπεδο μεταξύ του hardware και των ανώτερων επιπέδων του Android stack.  Βασίζεται σε linux 3.6 και παρέχει multitasking, υπηρεσίες συστήματος χαμηλού επιπέδου όπως διαχείριση μνήμης, επεξεργαστικής ισχύος και ισχύος κατανάλωσης και μία στοίβα από συσκευές όπως device display, wi-fi, audio, κτλ.

8 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 8 Android runtime - ART  Όταν μία εφαρμογή (android app) χτίζεται στο Studio μεταγλωττίζεται σε ένα ενδιάμεσο bytecode format (DEX).  Όταν η εφαρμογή φορτώνεται στη συσκευή, το ART χρησιμοποιεί μία διεργασία που ονομάζεται Ahead-of-time (AOT) compilation για τη μετάφραση του bytecode στις native εντολές που απαιτεί ο processor. Αυτό το format είναι γνωστό ως Executable and Linkable Format (ELF).  Κάθε φορά που η εφαρμογή καλείται, η εκτελέσιμη έκδοση ELF είναι run, με αποτέλεσμα καλύτερες επιδόσεις εκτέλεσης.  Σε παλαιότερες εκδόσεις υπήρχε η προσέγγιση Just-in-time compilation (Dalvik Virtual Machine το οποίο αντικαταστάθηκε πλήρως από την έκδοση 5.0 και μετά)

9 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 9 Android libraries  Εκτός των standard βιβλιοθηκών για την ανάπτυξη εφαρμογών, το περιβάλλον ανάπτυξης εφαρμογών περιλαμβάνει και τις Android libraries.  Πρόκειται για σύνολο από Java-based libraries που είναι καθορισμένες για το Android.

10 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 10 Android libraries android.app – Παρέχει πρόσβαση στο application model. android.content – διευκολύνει την πρόσβαση περιεχομένου, την ανταλλαγή μηνυμάτων μεταξύ εφαρμογών android.database – Για την πρόσβαση δεδομένων που δημοσιεύονται από content providers και περιλαμβάνει τις κλάσεις της SQLite database. android.graphics – Χαμηλού επιπέδου drawing API για 2D γραφικά (colors, points, filters, rectangles and canvases). android.hardware – Παρέχει ένα API για την πρόσβαση στο υλικό (accelerometer, light sensor). android.opengl – μία Java διεπαφή στο OpenGL ES 3D graphics rendering API. android.os – παρέχει εφαρμογές με πρόσβαση στις βασικές υπηρεσίες του λειτουργικού συστήματος (messages, system services and inter-process communication). android.media – Παρέχει κλάσεις για την υποστήριξη playback audio και video.

11 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 11 Android libraries android.net – Ένα σύνολο από APIs που παρέχουν πρόσβαση στο network stack. Περιλαμβάνει το android.net.wifi, που παρέχει πρόσβαση στο wireless stack του device. android.print – περιλαμβάνει μία σειρά από κλάσεις που επιτρέπουν να σταλεί περιεχόμενο σε διαμορφωμένους printers μέσα από Android applications. android.provider – Ένα σύνολο από κλάσεις που παρέχουν πρόσβαση σε standard Android content provider databases όπως αυτές που διατηρούνται από το calendar και contact applications. android.text – Για τη διαχείριση κειμένου. android.util – Ένα σύνολο από utility classes για τη λειτουργία tasks όπως string and number conversion, XML handling και date and time manipulation. android.view – Τα θεμελιώδη δομικά στοιχεία των application user interfaces. android.widget - Μία πλούσια συλλογή από pre-built user interface components όπως buttons, labels, list views, layout managers, radio buttons etc. android.webkit – Ένα σύνολο από κλάσεις που επιτρέπουν web-browsing capabilities να συμπεριληφθούν (built) σε εφαρμογές.

12 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 12 C/C++ libraries  Οι Android runtime core libraries που είδαμε πριν είναι βασισμένες σε Java και παρέχουν τα πρωτεύοντα APIs για τους developers.  Στην ουσία πρόκειται για το περιτύλιγμα ενός συνόλου από C/C++ libraries, συνεπώς όταν ο developer καλεί μία κλάση από τις Java βιβλιοθήκες, αυτές με τη σειρά τους καλούν τις υποκείμενες C/C++ βιβλιοθήκες.  Η άμεση κλήση των C/C++ libs μπορεί να επιτευχθεί με τη χρήση του Android Native Development Kit (NDK) το οποίο επιτρέπει την κλήση native methods της C/C++ από κώδικα Java μέσω του Java Native Interface (JNI).

13 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 13 Application framework  Είναι ένα σύνολο από υπηρεσίες που συνολικά σχηματίζουν το περιβάλλον στο οποίο διαχειριζόμαστε και εκτελούμε Android apps.  Το framework υλοποιεί την αρχή ότι οι εφαρμογές Android οικοδομούνται από επαναχρησιμοποιούμενα, ανταλλασσόμενα και αντικαθιστάμενα συστατικά.  Πρακτικά αυτό σημαίνει ότι κάθε app είναι σε θέση να δημοσιοποιεί τις δυνατότητές της και άλλα δεδομένα που μπορούν να χρησιμοποιηθούν από άλλες εφαρμογές.

14 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 14 Application services Activity Manager – Ελέγχει όλες τις εκφάνσεις του application lifecycle και του activity stack. Content Providers – Επιτρέπει σε εφαρμογές να μοιράζονται data μεταξύ τους Resource Manager – Παρέχει πρόσβαση σε πόρους που δεν είναι ενσωματωμένοι σε κώδικα όπως strings, color settings και user interface layouts. Notifications Manager – επιτρέπει σε εφαρμογές να δείχνουν alerts notifications στο χρήστη. View System – Ένα μεγάλο σύνολο από views που χρησιμοποιούνται για να δημιουργήσουν application user interfaces. Package Manager – Το σύστημα μέσω του οποίου οι εφαρμογές μπορούν να βρουν πληροφορίες για άλλες εφαρμογές που έχουν εγκατασταθεί στη συσκευή. Telephony Manager – Παρέχει πληροφορίες στην εφαρμογή για τις υπηρεσίες τηλεφωνίας που είναι διαθέσιμες στη συσκευή (status, subscriber information). Location Manager – Παρέχει πρόσβαση στις υπηρεσίες τοποθεσίας επιτρέποντας σε μία συσκευή να συλλέγει ενημερώσεις σχετικές με τις αλλαγές τοποθεσίας.

15 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 15 App framework – key services  Βρίσκονται στην κορυφή της στοίβας του software  Αποτελούν είτε τις native applications (web browser, , etc) και τις third-party applications.

16 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 16 Συστατικά των εφαρμογών  Τα application components είναι τα ουσιαστικά δομικά στοιχεία μίας Android εφαρμογής.  Τα συστατικά (components) είναι χαλαρά συζευγμένα μεταξύ τους μέσω του αρχείου AndroidManifest.xml που περιγράφει κάθε συστατικό και πως αλληλεπιδρά με τα υπόλοιπα. Τα βασικά συστατικά δίνονται στον παρακάτω πίνακα ComponentsDescription ActivitiesThey dictate the UI and handle the user interaction to the smart phone screen ServicesThey handle background processing associated with an application. Broadcast Receivers They handle communication between Android OS and applications. Content Providers They handle data and database management issues. FragmentsRepresents a portion of user interface in an Activity. ViewsUI elements that are drawn on-screen including buttons, lists forms etc. LayoutsView hierarchies that control screen format and appearance of the views. IntentsMessages wiring components together. ResourcesExternal elements, such as strings, constants and drawable pictures. ManifestConfiguration file for the application

17 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 17 Android activities  Οι Android εφαρμογές δημιουργούνται φέρνοντας κοντά ένα ή περισσότερα συστατικά γνωστά ως Activities.  Μία activity είναι ένα απλό, standalone module λειτουργικότητας επιπέδου εφαρμογής που συχνά συσχετίζεται με μία οθόνη user interface.  Π.χ. μία εφαρμογή appointments έχει ένα activity screen που δείχνει τα ραντεβού που έχουν οριστεί για την τρέχουσα ημέρα.  Η εφαρμογή μπορεί επίσης να χρησιμοποιεί μία δεύτερη activity που αποτελείται από μία οθόνη όπου νέα ραντεβού μπορούν να εισαχθούν από το χρήστη.  Είναι reusable και interchangeable building blocks  Μία εφαρμογή π.χ. μπορεί να περιέχει ένα activity για τη σύνθεση και αποστολή μηνυμάτων. Ένας developer μπορεί να γράψει μία εφαρμογή που επίσης απαιτεί την αποστολή . Αντί να αναπτύξει μία activity για αυτό το σκοπό μπορεί να χρησιμοποιήσει την activity της υπάρχουσας εφαρμογής.

18 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 18 Android activities  Τα activities δημιουργούνται σαν υπο- κλάσεις της κλάσης Android Activity και είναι ανεξάρτητες από άλλες activities στο application.  Υπό συνθήκες μία activity μπορεί να επιστρέψει αποτελέσματα στην activity από την οποία κλήθηκε. public class MainActivity extends Activity { }

19 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 19 Android services  To service είναι ένα συστατικό που εκτελείται στο υπόβαθρο ώστε να επιτελέσει λειτουργίες μεγάλης διάρκειας.  Για παράδειγμα ένα service μπορεί να παίζει μουσική στο υπόβαθρο ενώ ο χρήστης λειτουργεί μία άλλη εφαρμογή. Άλλο χαρακτηριστικό service είναι η μεταφόρτωση δεδομένων από το δίκτυο χωρίς να κωλύεται η αλληλεπίδραση του χρήστη με ένα activity  To service υλοποιείται σαν υποκλάση της Service class public class MyService extends Service { }

20 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 20 Android intents  Intents είναι ο μηχανισμός μέσω του οποίου μία activity έχει τη δυνατότητα να καλέσει άλλη και να υλοποιήσει τη ροή πληροφορίας ή λειτουργίας μέσω των activities που αποτελούν μία εφαρμογή.  Τα intents αποτελούνται από μία περιγραφή της λειτουργίας που θα υλοποιηθεί και προαιρετικά από τα δεδομένα στα οποία θα επενεργήσει.  Τα intents μπορεί να είναι συγκεκριμένα (explicit) (απαιτούν την κλήση συγκεκριμένου activity αναφέροντας το class name) ή να υποδεικνύουν (implicit) τον τύπο της ενέργειας που πρέπει να γίνει ή ακόμα και τα δεδομένα ενός συγκεκριμένου τύπου πάνω στον οποίο θα γίνει η ενέργεια.  Στην περίπτωση των implicit intents, το ART θα επιλέξει το activity που ταιριάζει περισσότερο με τα κριτήρια που έχουν καθοριστεί (intent Resolution)

21 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 21 Broadcast receivers  Είναι ο μηχανισμός μέσω του οποίου οι εφαρμογές αποκρίνονται σε Broadcast messages από άλλες εφαρμογές ή το σύστημα.  Ένας broadcast receiver πρέπει να καταχωρισθεί από μία εφαρμογή και να διαμορφωθεί με ένα intent filter που υποδεικνύει τους τύπους του broadcast που τον ενδιαφέρουν.  Μόλις ένα matching intent γίνει broadcast, o δέκτης θα κληθεί από το ART ανεξάρτητα του αν η εφαρμογή εκτελείται.  Ο receiver έχει 5 δευτερόλεπτα μέσα στα οποία πρέπει να ολοκληρώσει τα απαιτούμενα tasks πριν επιστρέψει.  Οι broadcast receivers εργάζονται στο υπόβαθρο και δεν έχουν user interface.  Ένας broadcast receiver υλοποιείται σαν υποκλάση της BroadcastReceiver κλάσης και κάθε μήνυμα στέλνεται ευρέως σαν ένα αντικείμενο Intent public class MyReceiver extends BroadcastReceiver { public void onReceive(context,intent){} }

22 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 22 Broadcast intents  Είναι ένα system wide intent που στέλνεται σε όλα τα applications που έχουν καταχωρίσει ένα «ενδιαφερόμενο» Broadcast receiver.  Για παράδειγμα, το Android θα στείλει τυπικά Broadcast intents για να υποδείξει τις αλλαγές στην κατάσταση της συσκευής όπως η ολοκλήρωση του system start up, σύνδεση μίας εξωτερικής πηγής, κλείσιμο της οθόνης, κλπ.  Ένα Broadcast Intent στέλνεται σε όλους τους ενδιαφερόμενους Receivers λίγο πολύ την ίδια στιγμή.

23 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 23 Content providers  Υλοποιούν ένα μηχανισμό για τη διανομή δεδομένων μεταξύ των εφαρμογών  Κάθε εφαρμογή μπορεί να παρέχει πρόσβαση των δεδομένων σε άλλες εφαρμογές μέσω της υλοποίησης ενός Content provider παρέχοντας τη δυνατότητα προσθήκης, αφαίρεσης, ερώτησης (permissions).  Πρόσβαση στα δεδομένα παρέχεται μέσω του universal resource identifier (URI).  Οι content providers που υπάρχουν σε ένα σύστημα Android μπορούν να βρεθούν καλώντας μεθόδους της κλάσης ContentResolver.  Ο Content Provider υλοποιείται σαν μία υποκλάση της ContentProvider κλάσης και πρέπει να υλοποιεί ένα καθορισμένο σύνολο APIs που επιτρέπουν σε άλλες εφαρμογές να πραγματοποιούν δοσοληψίες. public class MyContentProvider extends ContentProvider { public void onCreate() {} }

24 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 24 Ένα απλό παράδειγμα  Νέα εφαρμογή ENTER AN APPLICATION NAME SELECT MIN-SDK VERSION

25 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 25 Ένα απλό παράδειγμα  Βασική εικόνα

26 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 26 Ανατομία εφαρμογής Sr.NoFolder, File & Description 1Build: This contains the auto generated file which are as Aidl,Build configuration, and R(R.JAVA) 2Libs: This is a directory to add the libraries to develop the android applications 3Src: This contains the.java source files for your project. By default, it includes an MainActivity.java source file having an activity class that runs when your app is launched using the app icon. 4Res: This is a directory, which is having drawable,layout,values,and android manifest file 5res/drawable-hdpi: This is a directory for drawable objects that are designed for high-density screens. 6res/layout: This is a directory for files that define your app's user interface. 7res/menu: This is a directory for menu objects that are designed to make menu in android applications 8res/values: This is a directory for other various XML files that contain a collection of resources, such as strings and colors definitions. 9AndroidManifest.xml: This is the manifest file which describes the fundamental characteristics of the app and defines each of its components.

27 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 27 The Application Manifest  Η συγκολλητική ουσία που δένει τα διαφορετικά στοιχεία που συναποτελούν μία εφαρμογή είναι το Application Manifest αρχείο.  Μέσα σε αυτό το XML αρχείο η εφαρμογή περιγράφει τα activities, services, broadcast receivers, data providers και permissions που χτίζουν μία ολοκληρωμένη εφαρμογή.

28 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 28 Application resources  Μαζί με το manifest file και τα Dex files που περιέχουν τον byte κώδικα, το Android application package περιέχει και μία συλλογή από resource files.  Αυτά τα αρχεία περιέχουν resources όπως strings, images, fonts, colors που εμφανίζονται στο user interface μαζί με την XML αναπαράσταση των user interface layouts.  Εν γένει, τα αρχεία αποθηκεύονται στο /res υποφάκελο της ιεραρχίας του project

29 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 29 Application context  Όταν ένα application μεταγλωττίζεται, μία κλάση ονόματι R δημιουργείται και περιέχει αναφορές στα resources.  To application manifest file και τα resources συνδυάζονται για να δημιουργήσουν το γνωστό Application context.  Αυτό αναπαρίσταται από την Android context class και μπορεί να χρησιμοποιηθεί στον κώδικα για να έχει πρόσβαση στα application resources την ώρα της εκτέλεσης.  Επιπρόσθετα, ένα μεγάλο εύρος μεθόδων μπορούν να κληθούν πάνω στο application context για να συλλέξουν πληροφορίες και να κάνουν αλλαγές στο περιβάλλον της εφαρμογής κατά την εκτέλεση.

30 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 30 Resource management  Κάθε εφαρμογή που τρέχει φαίνεται στο λειτουργικό σαν ξεχωριστή διεργασία  Αν το σύστημα αντιληφθεί ότι τα resources στη συσκευή εξαντλούν τη χωρητικότητά της, θα αναλάβει δράση ώστε να τερματίσει processes.  To σύστημα λαμβάνει υπόψή του την προτεραιότητα και την κατάσταση των τρεχουσών διεργασιών (importance hierarchy).

31 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 31 Android process states  Τα processes φιλοξενούν applications οι οποίες αποτελούνται από συστατικά.  Μέσα στο Android, η τρέχουσα κατάσταση μίας διεργασίας ορίζεται από το ενεργό συστατικό με τη μεγαλύτερη βαθμολογία (highest ranking active component)

32 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 32 Android process states  Foreground:  Υψηλότερος βαθμός προτεραιότητας  το πολύ μία ή δύο ενεργές σε κάθε στιγμή.  Μία διεργασία είναι foreground όταν  φιλοξενεί τρέχουσα activity,  φιλοξενεί service συνδεδεμένο με την τρέχουσα activity,  Φιλοξενεί ένα service που καλεί τη μέθοδο startForeground(),  Φιλοξενεί ένα service που εκτελεί onCreate(), onResume(), onStart()  Φιλοξενεί ένα broadcast receiver που εκτελεί onReceive()  Visible process  Μία διεργασία που περιέχει ένα activity (ή service) ορατό στο χρήστη αλλά όχι το τρέχον.  Service process  Processes που περιέχουν ένα service που έχει εκκινήσει και εκτελείται

33 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 33 Android process states  Background  Μία διεργασία που περιέχει μία ή περισσότερες activities που δεν είναι ορατές στο χρήστη και δεν περιέχει ένα service που βρίσκεται στην service process status  To android περιέχει μία δυναμική λίστα από background processes και τις τερματίζει σε χρονολογική σειρά.  Empty process  Δεν περιέχουν ενεργές εφαρμογές και κρατούνται στη μνήμη για να φιλοξενήσουν νέες εφαρμογές.

34 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 34 Activity Lifecycle  Η κατάσταση μίας διεργασίας καθορίζεται από την κατάσταση των activities, components που συναποτελούν την εφαρμογή που φιλοξενεί.  Οι activities μεταβαίνουν μεταξύ διαφορετικών καταστάσεων κατά το χρόνο ζωής εκτέλεσης μίας εφαρμογής.  Η τρέχουσα κατάσταση καθορίζεται εν μέρει από τη θέση της activity στο Activity Stack

35 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 35 Activity Stack  Για κάθε εφαρμογή που εκτελείται το ART διατηρεί το Activity stack.  Κατά την κλήση της εφαρμογής, η πρώτη activity τοποθετείται στο stack.  Όταν μία δεύτερη ξεκινά, τοποθετείται στην κορυφή του stack και η προηγούμενη πάει μία θέση κάτω  Η activity στην κορυφή της στίβας είναι η ενεργή (ή τρέχουσα).  Όταν η τρέχουσα ολοκληρώνεται (exit) πετιέται από τη στοίβα από το ART (π.χ κατά το πάτημα του back button)

36 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 36 Activity Stack  LIFO stack

37 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 37 Activity states  Active/running – στην κορυφή της στοίβας – αλληλεπιδρά την τρέχουσα στιγμή με το χρήστη  Paused – Είναι ορατή στο χρήστη αλλά δεν υπάρχει εστίαση διότι επισκιάζεται από την ενεργή, διατηρείται στη μνήμη, υφίσταται στο window manager  Stopped – Δεν είναι ορατή στο χρήστη, έχει το υψηλότερο ρίσκο τερματισμού  Killed – Έχει τερματιστεί

38 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 38 Configuration changes  Καταστροφή και επαναδημιουργία διεργασιών όπως κατά την περιστροφή του κινητού (portrait, landscape)

39 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 39 Handling Activity Changes  Κατά τη διάρκεια της ζωής των εφαρμογών, τα εσωτερικά συστατικά τους μεταβαίνουν σε πολλές καταστάσεις.  Είναι σημαντικό να τονισθεί ότι οι αλλαγές που λαμβάνουν χώρα επικοινωνούνται στην εφαρμογή από το ART ώστε να μπορέσει η εφαρμογή να αντιδράσει κατάλληλα για την αποθήκευση ή ανάκτηση δεδομένων.

40 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 40 The Activity Class  Εκτός ολίγων εξαιρέσεων, τα activities σε ένα application δημιουργούνται σαν υποκλάσεις του Android Activity Class ή μίας άλλης κλάσης που είναι και αυτή υποκλάση της Activity Class (Π.χ. ActionBarActivity ή FragmentActivity classes)  Ας δούμε την περίπτωση μίας απλής εφαρμογής (AndroidSample project)

41 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 41 AndroidSampleActivity.java package com.ebookfrenzy.androidsample; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class AndroidSampleActivity extends ActionBarActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_android_sample); public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.android_sample, menu); return true; public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }

42 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 42 The ActionBarActivity Class  Διατρέχοντας το ref document της ActionBarActivity θα δούμε ότι είναι μία υποκλάση της Activity Class.  Για την ακρίβεια είναι υποκλάση της FragmentActivity που είναι υποκλάση της Activity Class.

43 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 43 Method overriding  Method overriding στον αντικειμενοστραφή προγραμματισμό ονομάζουμε ένα χαρακτηριστικό της γλώσσας που επιτρέπει σε μία υποκλάση ή κλάση παιδί να παρέχει συγκεκριμένη υλοποίηση μίας μεθόδου που παρέχεται ήδη από τις υπερκλάσεις ή πατρικές κλάσεις.

44 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 44 Δυναμική vs Μόνιμης κατάστασης  Ένας βασικός στόχος της διαχείρισης του Activity lifecycle είναι να επιβεβαιωθεί ότι το activity αποθηκεύεται και ανακτάται σε συγκεκριμένες στιγμές.  Όταν μιλάμε για state εννοούμε τα δεδομένα που κρατούνται μέσα στο activity και την εμφάνιση του user interface.  H activity μπορεί για παράδειγμα να διατηρεί ένα μοντέλο δεδομένων στη μνήμη που πρέπει να αποθηκευτούν σε μία βάση, ένα content provider ή ένα αρχείο. (persistent state)  H εμφάνιση του user interface (όπως το κείμενο που εισάγεται σε ένα text field αλλά δεν έχει δεσμευτεί ακόμα στο εσωτερικό data model της εφαρμογής) ονομάζεται δυναμική κατάσταση (instance state)

45 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 45 Android Activity Lifecycle Methods  H Activity class περιέχει ένα αριθμό lifecycle methods που δρουν σαν event handlers όταν η κατάσταση μίας Activity αλλάζει. Οι κύριες methods που υποστηρίζονται από την Android Activity class είναι οι ακόλουθες  onCreate(Bundle savedInstance State) – Η μέθοδος που καλείται όταν το activity δημιουργείται για πρώτη φορά και η ιδανική τοποθεσία για τη λειτουργία των initialization tasks. Έχει ένα argument στη μορφή ενός Bundle object που περιέχει δυναμική κατάσταση πληροφορίας  onRestart() – Όταν ξαναξεκινά το activity μετά από λήξη του από το ART  onStart() – Μετά από το onCreate, onRestart, η μέθοδος υποδεικνύει ότι η activity θα γίνει ορατή στο χρήστη  onResume() – Υποδεικνύει ότι το activity είναι στην κορυφή του activity stack, πρόκειται για την δραστηριότητα με την οποία αλληλεπιδρά ο χρήστης  onPause() – Υποδεικνύει ότι μία προηγούμενη activity πρόκειται να γίνει το foreground activity. Αυτή η κλήση ακολουθείται από άλλη κλήση είτε στο onResume(), ή onStop(). Θα πρέπει να γίνουν οι ενέργειες για την αποθήκευση persistent data που απαιτούνται από το activity (content provider, database or file)

46 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 46 Android Activity Lifecycle Methods  onStop()– Η μέθοδος δεν είναι πλέον ορατή στο χρήστη (onRestart() για να επανέλθει, onDestroy() για να καταστραφεί)  onDestroy() – H activity πρόκειται να καταστραφεί είτε εθελοντικά (ολοκληρώθηκε και καλεί τη finish() μέθοδο) ή επειδή το ART ανέλαβε να την τερματίσει Εκτός των lifecycle methods, υπάρχουν δύο methods που υπάρχουν για να αποθηκεύουν και να ανακτούν τη δυναμική κατάσταση του activity  onRestoreInstanceState(Bundle savedInstanceState) – Αυτή η μέθοδος καλείται αμέσως μετά μία κλήση στην OnStart() μέθοδο στην περίπτωση που το activity ξαναξεκινά από ένα προηγούμενο invocation στο οποίο είχε σωθεί η κατάσταση. Το Bundle object περιέχει τα data της προηγούμενης κατάστασης.  onSaveInstanceState(Bundle outState)– Καλείται πριν την καταστροφή μίας activity ώστε η τρέχουσα δυναμική κατάσταση να αποθηκευτεί. Η μέθοδος αποθηκεύει την τρέχουσα κατάσταση στο Bundle object.

47 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 47 Activity Lifetimes  Entire lifetime – οτιδήποτε μεταξύ του onCreate() και του onDestroy()  Visible Lifetime – καλύπτει τις περιόδους εκτέλεσης μεταξύ του onStart() και του onStop().  Foreground Lifetime – Μεταξύ του onResume() και του OnPause().

48 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 48 Activity Lifetimes

49 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 49 1 ο παράδειγμα  StateChange: Στόχος του παραδείγματος είναι να σας δείξει τις αλλαγές των καταστάσεων της activity με την περιστροφή του κινητού τηλεφώνου.  Κάνουμε χρήση του method overriding

50 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 50 Φιλτράρισμα του LogCat Ξεκινά με Alt+6

51 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 51 Android Views  Κάθε στοιχείο σε ένα user interface είναι μία υποκλάση της Android View Class.  To Android SDK παρέχει ένα σύνολο από pre-built views για την κατασκευή ενός interface (button, CheckBox, ProgressBar, …) που ονομάζονται συνήθως Widgets ή Components  Νέα views μπορούν να δημιουργηθούν μέσω sublcassing ή extending στα υπάρχοντα views.  Ένα view μπορεί να αποτελείται από πολλά άλλα (composite view υποκλάσεις της Android ViewGroup)

52 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 52 Android Layout Managers  Υπάρχει ένα σύνολο από views που αναφέρονται ως Layouts, τα οποία είναι container views (υποκλάσεις της viewGroup).  To Android SDK περιέχει τα ακόλουθα layout views  LinearLayout – Βάζει child views σε μία στήλη ή γραμμή ανάλογα με την επιλογή του Orientation.  TableLayout - Διευθετεί τα child views σε ένα grid format.  FrameLayout – Κάνει allocation μίας περιοχής της οθόνης για την προβολή συνήθως ενός view  RelativeLayout – Επιτρέπει στα child views να τοποθετηθούν σχετικά το ένα ως προς το άλλο  AbsoluteLayout – Επιτρέπει στα child views να τοποθετηθούν σε απόλυτες θέσεις – δεν χρησιμοποιείται σχεδόν ποτέ  GridLayout – Ένας νέος Layout Manager μέρος του Android 4.0. Ένα instance του GridLayout διαιρείται σε αόρατες γραμμές που σχηματίζουν ένα πλέγμα (grid)

53 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 53 View Hierarchy  Εκτός των ορατών στοιχείων (visible button, checkbox views), το UI περιλαμβάνει ένα αριθμό από layout views που ελέγχουν πως τα visible views τοποθετούνται

54 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 54 View Hierarchy  Εδώ βλέπουμε και τα Layout views σε σχέση με τα child views

55 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 55 Δημιουργία User Interfaces  Υπάρχουν τρεις τρόποι να σχεδιάσει κανείς το user interface.  Android Studio Designer tool  Handwriting XML Layout resource files  Java Code.

56 Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές – Android 56 Δημιουργία XML Layout


Κατέβασμα ppt "Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές 2 ο μέρος: Android ΠΜΣ: Τεχνολογίες Υπολογισμού και Δικτύων Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Αθήνας."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google