Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Advertisements

Τεχνολογία ΛογισμικούSlide 1 Έλεγχος Καταψύκτη (Ada) Τεχνολογία ΛογισμικούSlide 39 with Pump, Temperature_dial, Sensor, Globals, Alarm; use Globals ; procedure.
PL/SQL.
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
JAVA και SQL Δαμιανός Χατζηαντωνίου
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ΠΑΡΑΔΟΣΕΙΣ ΜΑΘΗΜΑΤΟΣ «ΔΙΚΤΥΑ ΕΛΕΓΧΟΥ» ΟΚΤΩΒΡΙΟΣ 2004.
Εισαγωγή σε Android Δομή αρχείων σε Android Projects
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
Προηγμένες υπηρεσίες προς τους Πολίτες Σταύρος Αλεξάκης Public Sector Lead– Microsoft Hellas.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
Τεχνολογία ΛογισμικούSlide 1 Σχεδιασμός Λογισμικού ATM loop Print_input_message (” Welcome - Please enter your card”) ; exit when Card_input ; end loop.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
ΗΥ Καλοκαιρινός Γιώργος1 PCI Bus Pin List. ΗΥ Καλοκαιρινός Γιώργος2 Initiator Target.
Τεχνολογία ΛογισμικούSlide 1 Εκτέλεση σε Πραγματικό Χρόνο Τεχνολογία Λογισμικού Slide 25.
6/23/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Registers.
ΗΥ Καλοκαιρινός Γιώργος1 Bus. ΗΥ Καλοκαιρινός Γιώργος2 MCS51.
1 26/6/2015 Προγραμματισμός Διαδικτύου – Lecture 8 LECTURE 8 Using Databases with PHP Scripts: Using MySQL Database with PHP Προγραμματισμός Διαδικτύου.
6/26/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Asynchronous Circuits.
Διάλ ε ξη 10 Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη.
Week 11 Quiz Sentence #2. The sentence. λαλο ῦ μεν ε ἰ δότες ὅ τι ὁ ἐ γείρας τ ὸ ν κύριον Ἰ ησο ῦ ν κα ὶ ἡ μ ᾶ ς σ ὺ ν Ἰ ησο ῦ ἐ γερε ῖ κα ὶ παραστήσει.
Install WINDOWS 7 Κουτσικαρέλης Κων / νος Κουφοκώστας Γεώργιος Κάτσας Παναγιώτης Κουνάνος Ευάγγελος Μ π ουσάη Ελισόν Τάξη Β΄ Τομέας Πληροφορικής 2014 –’15.
Αριθμητική Επίλυση Διαφορικών Εξισώσεων 1. Συνήθης Δ.Ε. 1 ανεξάρτητη μεταβλητή x 1 εξαρτημένη μεταβλητή y Καθώς και παράγωγοι της y μέχρι n τάξης, στη.
Δίκτυα Κινητών Επικοινωνιών και Εφαρμογές 2 ο μέρος: Android ΠΜΣ: Τεχνολογίες Υπολογισμού και Δικτύων Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Αθήνας.
2 Μικρές Επιχειρήσεις Μεσαίες Επιχειρήσεις Μεγάλες Επιχειρήσεις Καταναλωτές Κατηγορία Πελατών Ολοκληρωμένες Λύσεις Servers Γενικής Χρήσης Αριθμός Χρηστών.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
Εξέλιξη Farm Manager iOS για δυνατότητα λογικής ομαδοποίησης, επισκόπησης εργασιών που εκκρεμούν και αναφορές Μπούρας Βασίλειος 2702 Επιβλέπων: Δρ. Λάντζος.
Guide to Business Planning The Value Chain © Guide to Business Planning A principal use of value chain analysis is to identify a strategy mismatch between.
Guide to Business Planning The Value System © Guide to Business Planning The “value system” is also referred to as the “industry value chain”. In contrast.
Μαθαίνω με “υπότιτλους”
Σημαντικές Κλάσεις του Android Fragments ViewPager TabHost
Web Services στη C# Εργαστήριο 5
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Ασκήσεις Κεφάλαιο 11.
Παπαϊωάννου Άλκηστις Ph. D. , M. Sc
Matrix Analytic Techniques
Ψηφιακeς ιδEες και αξIες
Υποστηρίζω την άποψη μου επιχειρηματολογώντας
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Υδρόβια Φυτά Θεοφανώ Κούλεντρου Rippling Water (Basic)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Διοίκηση Απόδοσης Επιχειρηματικών Διαδικασιών
Διάλεξη 2 Open eClass Εφαρμογές ΤΠΕ στην Εκπαίδευση & την Ειδική Αγωγή
ΟΡΓΑΝΩΣΗ ΑΘΛΗΤΙΚΗΣ ΕΓΚΑΤΑΣΤΑΣΗΣ
Βάσεις Δεδομένων ΙΙ Triggers
Διδάσκων: Κων/νος Κώτης
(ALPHA BANK – EUROBANK – PIRAEUS BANK)
Οσμές στη Σχεδίαση του Λογισμικού
Braille Messenger
Χαράλαμπος Καραγιαννίδης
Χαράλαμπος Καραγιαννίδης
This show was edited by Mike:
JAVA – Basic OOP Principles
Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
Πανεπιστήμιο Θεσσαλίας
Σχεσιακεσ βασεισ δεδομενων
Εκπαιδευτική ρομποτική
ΑΓΓΛΙΚΑ Ε’ ΔΗΜΟΤΙΚΟΥ English 5th Grade -Writing Activities-
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
GLY 326 Structural Geology
ΕΝΣΤΑΣΕΙΣ ΠΟΙΟΣ? Όμως ναι.... Ένα σκάφος
This show was edited by Mike:
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Lower Bound for Partial Sums
This show was edited by Mike:
This show was edited by Mike:
CPSC-608 Database Systems
Μεταγράφημα παρουσίασης:

Τμήμα Πληροφορικής και Τηλεπικοινωνιών Διάλεξη 10 Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Διάλεξη 10 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 1

Τμήμα Πληροφορικής και Τηλεπικοινωνιών Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Διάλεξη 10 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016

Android και Threads Εκκίνηση εφαρμογής  εκκίνηση νήματος γνωστό ως main ή UI thread Κανόνες που διέπουν το Android single thread model To UΙ thread δεν πρέπει να μπλοκάρεται Αποφυγή πρόσβασης στο Android UI toolkit από άλλα thread εκτός του UI thread UI thread Υπεύθυνο για την αποστολή γεγονότων συμπεριλαμβανομένων και των drawing events Παράδειγμα: Click ένα κουμπί  το UI thread αποστέλλει το γεγονός αυτό στο αντίστοιχο widget  το οποίο θέτει τη press state του συγκεκριμένου κουμπιού σε true και προσθέτει στην ουρά γεγονότων μία αίτηση  Τo UI thread αφαιρεί αυτή την αίτηση και ενημερώνει το widget να κάνει redraw  το widget έκτελεί το redraw και η αλλαγή φαίνεται στο χρήστη. Αποφυγή εκτέλεσης χρονοβόρων διαδικασιών σε αυτό το thread Θα μπλοκάρει όλη η διεπαφή, Ο χρήστης νομίζει ότι η εφαρμογή κολλάει ή έχει κρεμάσει Αν το νήμα μπλοκάρει για μεγάλο χρονικό διάστημα, ο χρήστης ενημερώνεται από το λειτουργικό σύστημα ότι η εφαρμογή δεν ανταποκρίνεται. Πχ: Μη ανταπόκριση σε ένα input event (π.χ. πάτημα ενός κουμπιού) εντός 5 δευτερολέπτων Μη ολοκλήρωση των λειτουργιών ενός BroadcastReceiver εντός 10 δευτερολέπτων Διάλεξη 10

Android και Threads Μέθοδοι αποφυγής των προβλημάτων αυτών Παραβίαση του single thread model το οποίο ορίζει ότι το Android UI toolkit το χειρίζεται μόνο το UI thread Μπορούν να χρησιμοποιηθούν για άλλες ενέργειες που δεν αλληλεπιδρούν με το UI (worker threads) Τρόποι πρόσβασης στο UI από άλλα threads Περίπλοκες διαδικασίες που κάνουν περίπλοκο τον κώδικα Παραδείγματα Activity.runOnUiThread(Runnable r) View.post(Runnable) View.postDelayed(Runnable) Handler Χρήση των AsyncTasks Αναλαμβάνει να διαχειριστεί τα threads για τον χρήστη Διάλεξη 10

Τμήμα Πληροφορικής και Τηλεπικοινωνιών Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Διάλεξη 10 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016

AsyncTask Δημιουργία κλάσης που κάνει extend την AsyncTask κλάση Το instance του αντικειμένου πρέπει να δημιουργηθεί στο Ui thread Το ΑsyncTask εκτελείται μία φορά ΜΟΝΟ Χρήσιμες μέθοδοι για override doInBackground()  εκτελείται αυτόματα σε νέο thread onPreExecute(), onPostExecute() and onProgressUpdate() γίνονται invoke από το Ui thread, επιτρέποντας έτστι τη πρόσβαση στο Android UI Toolkit Αυτό που επιστρέφει η doInBackground() αποστέλλεται στην onPostExecute() Καλώντας την publishProgress() οποιαδήποτε στιγμή στην doInBackground() εκτελείται η onProgressUpdate() στο UI thread Το κάθε task μπορεί να ακυρωθεί οποιαδήποτε στιγμή από οποιοδήποτε Thread Παράδειγμα: Διάλεξη 10

Τμήμα Πληροφορικής και Τηλεπικοινωνιών Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Διάλεξη 10 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016

Handler class Επιτρέπουν την αποστολή και διαχείριση Μessage και Runnable αντικειμένων που σχετίζονται με την ουρά μηνυμάτων ενός νήματος Κάθε Handler instance συσχετίζεται με ένα νήμα (και την αντίστοιχη ουρά μηνυμάτων). Η συσχέτιση αυτή γίνεται κατά τη δημιουργία του Handler instance, οπότε αυτό είναι πλέον «συνδεδεμένο» με το νήμα που το δημιούργησε Σε αυτό το νήμα θα αποστέλλει Message και Runnable αντικείμενα. Τα μηνύματα τοποθετούνται στην ουρά μηνυμάτων και εκτελούνται όταν βγουν από αυτή. Διάλεξη 10

Τοποθετούν Message objects που περιέχουν δεδομένα προς επεξεργασία Handler class Τα Handlers είναι χρήσιμα όταν πρέπει: Να χρονοπρογραμματίσουμε την εκτέλεση Messages ή Runnables κάποια στιγμή στο μέλλον Να προσθέσουμε μία ενέργεια που θα εκτελεστεί σε άλλο thread Βασικές μέθοδοι για scheduling Messages ή Runnables post(Runnable), postAtTime(Runnable, long), postDelayed(Runnable, long), sendEmptyMessage(int), sendMessage(Message), sendMessageAtTime(Message, long), sendMessageDelayed(Message, long) handleMessage(Message) Ένας Handler μπορεί να αναλάβει την επικοινωνία ανάμεσα στο mainThread που είναι υπεύθυνο για τη διαχείριση των top-level αντικειμένων (activities, broadcast receivers κλπ.) με τα υπόλοιπα threads Τοποθετούν Runnable objects ώστε να κληθούν από την ουρά μηνυμάτων όταν ληφθούν Τοποθετούν Message objects που περιέχουν δεδομένα προς επεξεργασία Υλοποιείται από τις υποκλάσεις του Handler και καλείται για να επεξεργαστεί τα δεδομένα που στέλνουν οι sendMessage Διάλεξη 10

Service vs Thread vs IntentService vs AsyncTask When to use ? Task with no UI, but shouldn't be too long. Use threads within service for long tasks. - Long task in general. - For tasks in parallel use Multiple threads (traditional mechanisms) Long task usually with no communication to main thread. - If communication is required, can use main thread handler or broadcast intents - When callbacks are needed (Intent triggered tasks).  - Small task having to communicate with main thread. - For tasks in parallel use multiple instances OR Executor  Trigger Call to method onStartService() Thread start() method Intent Call to method execute() Triggered From (thread) Any thread Any Thread Main Thread (Intent is received on main thread and then worker thread is spawed) Main Thread Runs On (thread) Its own thread Separate worker thread Worker thread. However, Main thread methods may be invoked in between to publish progress. Limitations / Drawbacks May block main thread - Manual thread management - Code may become difficult to read - Cannot run tasks in parallel. - Multiple intents are queued on the same worker thread. - one instance can only be executed once (hence cannot run in a loop)  - Must be created and executed from the Main thread Διάλεξη 7

Τμήμα Πληροφορικής και Τηλεπικοινωνιών Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Διάλεξη 10 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016

SQLite Database Open Source Database ενσωματωμένη στην πλατφόρμα Android Υποστηρίζει λειτουργικότητα σχεσιακών βάσεων δεδομένων Συντακτικό SQL Transactions Prepared Statements Απαιτεί ελάχιστη μνήμη (~250 Kbytes) Υποστηρίζει του τύπους TEXT (ανάλογο του String της Java) INTEGER (ανάλογο του long της Java) REAL (ανάλογο του double στη Java) Όλοι οι άλλοι τύποι πρέπει να μετατραπούν σε κάποιον από τους παραπάνω για να αποθηκευθούν στην ΒΔ Κάθε εφαρμογή μπορεί να χρησιμοποιεί τη δική της Βάση Δεδομένων Path: /DATA/data/APP_NAME/databases/FILENAME Με χρήση της Java μπορούμε να δημιουργήσουμε, να ανοίξουμε μια βάση, να δημιουργήσουμε πίνακες στη βάση, να εισάγουμε και να εξάγουμε δεδομένα προς και από τους πίνακες. Διάλεξη 10

SQLite - Κλάση SQLiteDatabase Η κλάση SQLiteDatabase αποτελεί τη βασική κλάση για την αλληλεπίδραση με τη βάση SQLite. Παρέχει μεθόδους για άνοιγμα και κλείσιμο της βάσης Παρέχει μεθόδους για εισαγωγή, διαγραφή και ενημέρωση δεδομένων στη βάση Μέθοδοι insert(), update() και delete() Παρέχει τη μέθοδο execSQL() για την εκτέλεση SQL statements Το αντικείμενο ContentValues επιτρέπει τον καθορισμό ζευγαριών (κλειδί, τιμή) και επιτρέπει την εισαγωγή και ανανέωση δεδομένων στη βάση. Το κλειδί (key) αντιπροσωπεύει το όνομα της στήλης του πίνακα, ενώ η τιμή (value) το περιεχόμενο του πίνακα στη συγκεκριμένη στήλη για την τρέχουσα εγγραφή Επερωτήσεις μπορούν να δημιουργηθούν με χρήση των μεθόδων rawQuery() και query() ή με χρήση της κλάσης SQLiteQueryBuilder. Διάλεξη 10

Τμήμα Πληροφορικής και Τηλεπικοινωνιών Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Διάλεξη 10 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016

Android and Web Services Διάλεξη 10

Τμήμα Πληροφορικής και Τηλεπικοινωνιών Android και Threads AsyncTasks Handlers SQLite Android και Web Services Android Design Patterns Διάλεξη 10 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016

To layout γίνεται inflate τη 1η φορά μόνο ViewHolder Το View Holder επιτρέπει τη πρόσβαση σε κάθε list item ενός List Activity χωρίς την χρήση της findViewById() στην getView() του ArrayAdapter η οποία καλείται κατά το scrolling Πως δουλεύει: To layout γίνεται inflate τη 1η φορά μόνο Σε ΚΑΘΕ κλήση (πχ όταν γίνεται scrolldown) για ΌΛΑ τα list items ψάχνει να βρει το id, καταναλώνοντας πόρους από τη μνήμη Διάλεξη 7

Half Synchronous- Half Asynchronous Καθορίζει τη δομή των νημάτων σε μία πολυνηματική εφαρμογή Η διαχείριση των νημάτων διασπάται σε 2 διαχειριστικά κομμάτια Το ασύγχρονο κομμάτι είναι η επικοινωνία του main thread με ένα άλλο thread (worker thread) To σύγχρονο κομμάτι είναι η ανάθεση tasks σε άλλα νήματα (τα οποία λαμβάνονται από κάποιο pool) από το worker thread Ουσιαστικά τα AsyncTasks υλοποιούν αυτό το design pattern API versioning Αρχικά τα AsyncTasks εκτελούνταν σειριακά σε ένα μόνο background thread. DONUT SDK: Αντί για ένα background thread υπάρχει pool από νήματα επιτρέποντας σε πολλαπλά tasks να εκτελούνται παράλληλα HONEYCOMB SDK: άλλαξε πάλι σε ένα thread για αποφυγή λαθών σε εφαρμογές λόγω παράλληλης εκτέλεσης tasks. Η λύση για παράλληλη εκτέλεση των tasks είναι η χρήση του executeOnExecutor(Executor, Params...) με το flag THREAD_POOL_EXECUTOR Συνίσταται να αποφεύγεται και αν κάτι τέτοιο δεν είναι εφικτό, θα πρέπει να γίνεται με μεγάλη προσοχή. Διάλεξη 7

Αναφορές Threads AsyncTasks Handlers Other http://developer.android.com/guide/components/processes-and-threads.html http://developer.android.com/reference/java/lang/Thread.html AsyncTasks http://developer.android.com/reference/android/os/AsyncTask.html http://code.google.com/p/shelves/ Handlers http://developer.android.com/reference/android/os/Handler.html Other Service vs Thread vs IntentService vs AsyncTask http://crazyaboutandroid.blogspot.gr/2011/12/difference-between-android.html Common Tasks in Android http://developer.android.com/guide/faq/commontasks.html#threading Keeping the App responsive http://developer.android.com/training/articles/perf-anr.html Διάλεξη 10