Κλείσιμο διαφήμισης

Υπάρχουν ακόμα πολλοί άνθρωποι που δεν γνωρίζουν πώς λειτουργεί το multitasking στο iOS. Αρχικά, ωστόσο, είναι απαραίτητο να επισημάνουμε ότι δεν πρόκειται για πραγματικό multitasking, αλλά για μια πολύ έξυπνη λύση που δεν επιβαρύνει το σύστημα ή τον χρήστη.

Συχνά μπορεί κανείς να ακούσει δεισιδαιμονίες ότι οι εφαρμογές που εκτελούνται στο παρασκήνιο στο iOS γεμίζουν τη λειτουργική μνήμη, γεγονός που οδηγεί σε επιβράδυνση του συστήματος και διάρκεια ζωής της μπαταρίας, επομένως ο χρήστης πρέπει να τις απενεργοποιήσει χειροκίνητα. Η γραμμή πολλαπλών εργασιών δεν περιέχει στην πραγματικότητα μια λίστα με όλες τις διεργασίες παρασκηνίου που εκτελούνται, αλλά μόνο τις πιο πρόσφατα εκκινημένες εφαρμογές. Έτσι, ο χρήστης δεν χρειάζεται να ανησυχεί για διεργασίες που εκτελούνται στο παρασκήνιο, εκτός από μερικές περιπτώσεις. Όταν πατάτε το κουμπί Home, η εφαρμογή συνήθως τίθεται σε κατάσταση αναστολής λειτουργίας ή κλείνει, ώστε να μην φορτώνει πλέον τον επεξεργαστή ή την μπαταρία και να ελευθερώνει την απαραίτητη μνήμη εάν χρειάζεται.

Επομένως, αυτό δεν είναι πλήρες multitasking όταν εκτελούνται δεκάδες διεργασίες Μόνο μία εφαρμογή εκτελείται πάντα στο προσκήνιο, η οποία τίθεται σε παύση ή απενεργοποιείται εντελώς εάν είναι απαραίτητο. Μόνο μερικές δευτερεύουσες διεργασίες εκτελούνται στο παρασκήνιο. Γι' αυτό σπάνια θα συναντήσετε ένα σφάλμα εφαρμογής στο iOS, για παράδειγμα το Android είναι κατακλυσμένο από εφαρμογές που εκτελούνται και τις οποίες πρέπει να φροντίσει ο χρήστης. Αφενός, αυτό κάνει την εργασία με τη συσκευή δυσάρεστη και, αφετέρου, προκαλεί, για παράδειγμα, αργή εκκίνηση και μεταβάσεις μεταξύ εφαρμογών.

Τύπος χρόνου εκτέλεσης εφαρμογής

Η εφαρμογή στη συσκευή σας iOS βρίσκεται σε μία από αυτές τις 5 καταστάσεις:

  • Τρέξιμο: η εφαρμογή ξεκινά και εκτελείται στο προσκήνιο
  • Ιστορικό: εξακολουθεί να εκτελείται αλλά τρέχει στο παρασκήνιο (μπορούμε να χρησιμοποιήσουμε άλλες εφαρμογές)
  • Ανασταλεί: Εξακολουθεί να χρησιμοποιεί μνήμη RAM αλλά δεν λειτουργεί
  • Αδρανής: η εφαρμογή εκτελείται αλλά έμμεσες εντολές (για παράδειγμα, όταν κλειδώνετε τη συσκευή με την εφαρμογή σε λειτουργία)
  • Δεν τρεχω: Η εφαρμογή έχει τερματιστεί ή δεν έχει ξεκινήσει

Η σύγχυση έρχεται όταν η εφαρμογή πηγαίνει στο παρασκήνιο για να μην ενοχλεί. Όταν πατάτε το κουμπί Αρχική σελίδα ή χρησιμοποιείτε την κίνηση για να κλείσετε την εφαρμογή (iPad), η εφαρμογή πηγαίνει στο παρασκήνιο. Οι περισσότερες εφαρμογές τίθενται σε αναστολή εντός δευτερολέπτων (Αποθηκεύονται στη μνήμη RAM του iDevice, ώστε να μπορούν να εκκινηθούν γρήγορα, δεν φορτώνουν τόσο πολύ τον επεξεργαστή και εξοικονομούν έτσι τη διάρκεια ζωής της μπαταρίας) Μπορεί να σκεφτείτε ότι εάν μια εφαρμογή συνεχίσει να χρησιμοποιεί μνήμη, έχετε για να το διαγράψετε χειροκίνητα για να το ελευθερώσετε. Αλλά δεν χρειάζεται να το κάνετε αυτό, γιατί το iOS θα το κάνει για εσάς. Εάν έχετε μια απαιτητική εφαρμογή σε αναστολή στο παρασκήνιο, όπως ένα παιχνίδι που χρησιμοποιεί μεγάλη ποσότητα μνήμης RAM, το iOS θα την αφαιρέσει αυτόματα από τη μνήμη όταν είναι απαραίτητο και μπορείτε να την επανεκκινήσετε πατώντας το εικονίδιο της εφαρμογής.

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

Εργασίες παρασκηνίου

Κανονικά, όταν πατήσετε το κουμπί Αρχική σελίδα, η εφαρμογή θα εκτελείται στο παρασκήνιο και εάν δεν τη χρησιμοποιείτε, θα σταματήσει αυτόματα μέσα σε πέντε δευτερόλεπτα. Έτσι, εάν κατεβάζετε ένα podcast, για παράδειγμα, το σύστημα το αξιολογεί ως εφαρμογή που εκτελείται και καθυστερεί τον τερματισμό κατά δέκα λεπτά. Μετά από δέκα λεπτά το αργότερο, η διαδικασία αποδεσμεύεται από τη μνήμη. Εν ολίγοις, δεν χρειάζεται να ανησυχείτε μήπως διακόψετε τη λήψη σας πατώντας το κουμπί Home, εάν δεν χρειαστούν περισσότερα από 10 λεπτά για να ολοκληρωθεί.

Αόριστο τρέξιμο στο παρασκήνιο

Σε περίπτωση αδράνειας, το σύστημα τερματίζει την εφαρμογή εντός πέντε δευτερολέπτων και σε περίπτωση λήψεων, ο τερματισμός καθυστερεί για δέκα λεπτά. Ωστόσο, υπάρχει ένας μικρός αριθμός εφαρμογών που απαιτούν εκτέλεση στο παρασκήνιο. Ακολουθούν ορισμένα παραδείγματα εφαρμογών που μπορούν να εκτελούνται στο παρασκήνιο επ' αόριστον στο iOS 5:

  • Εφαρμογές που αναπαράγουν ήχο και πρέπει να διακοπούν για λίγο (παύση μουσικής κατά τη διάρκεια τηλεφωνικής κλήσης κ.λπ.),
  • Εφαρμογές που παρακολουθούν την τοποθεσία σας (λογισμικό πλοήγησης),
  • Εφαρμογές που λαμβάνουν κλήσεις VoIP, για παράδειγμα εάν χρησιμοποιείτε το Skype, μπορείτε να λάβετε μια κλήση ακόμα και όταν η εφαρμογή βρίσκεται στο παρασκήνιο,
  • Αυτόματες λήψεις (π.χ. Περίπτερο).

Όλες οι εφαρμογές θα πρέπει να κλείσουν εάν δεν εκτελούν πλέον μια εργασία (όπως λήψεις στο παρασκήνιο). Ωστόσο, υπάρχουν εξαιρέσεις που εκτελούνται συνεχώς στο παρασκήνιο, όπως η εγγενής εφαρμογή Mail. Εάν εκτελούνται στο παρασκήνιο, καταλαμβάνουν μνήμη, χρήση CPU ή μειώνουν τη διάρκεια ζωής της μπαταρίας

Οι εφαρμογές που επιτρέπεται να εκτελούνται στο παρασκήνιο επ' αόριστον μπορούν να κάνουν οτιδήποτε κάνουν ενώ εκτελούνται, από την αναπαραγωγή μουσικής μέχρι τη λήψη νέων επεισοδίων Podcast.

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

Έτσι, γενικά, δεν χρειάζεται να διαχειρίζεστε διαδικασίες παρασκηνίου γιατί το σύστημα θα τις φροντίσει μόνο του. Γι' αυτό το iOS είναι ένα τόσο φρέσκο ​​και γρήγορο σύστημα.

Από την πλευρά ενός προγραμματιστή

Η εφαρμογή μπορεί να αντιδράσει με έξι συνολικά διαφορετικές καταστάσεις ως μέρος του multitasking:

1. applicationWillResignActive

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

2. applicationDidEnterBackground

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

3. applicationWillEnterForeground

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

4. applicationDidBecomeActive

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

5. η εφαρμογή Θα Τερματιστεί

Αυτή η κατάσταση συμβαίνει λίγα χιλιοστά του δευτερολέπτου πριν από την έξοδο της εφαρμογής, δηλαδή πριν τερματιστεί πραγματικά η εφαρμογή. Είτε χειροκίνητα από multitasking είτε κατά την απενεργοποίηση της συσκευής. Η μέθοδος θα πρέπει να χρησιμοποιείται για την αποθήκευση επεξεργασμένων δεδομένων, για τον τερματισμό όλων των δραστηριοτήτων και για τη διαγραφή δεδομένων που δεν θα χρειάζονται πλέον.

6. applicationDidReceiveMemoryWarning

Είναι η τελευταία κατάσταση που συζητείται περισσότερο. Είναι υπεύθυνη, εάν είναι απαραίτητο, για την αφαίρεση της εφαρμογής από τη μνήμη iOS εάν χρησιμοποιεί άσκοπα πόρους του συστήματος. Δεν ξέρω συγκεκριμένα τι κάνει το iOS με τις εφαρμογές παρασκηνίου, αλλά αν χρειάζεται μια εφαρμογή για να απελευθερώσει πόρους σε άλλες διαδικασίες, το ζητά με μια προειδοποίηση μνήμης να απελευθερώσει οποιουσδήποτε πόρους διαθέτει. Αυτή η μέθοδος λοιπόν καλείται στην εφαρμογή. Οι προγραμματιστές θα πρέπει να το εφαρμόσουν έτσι ώστε η εφαρμογή να εγκαταλείψει τη μνήμη που έχει εκχωρήσει, να αποθηκεύσει ό,τι βρίσκεται σε εξέλιξη, να διαγράψει τα περιττά δεδομένα από τη μνήμη και διαφορετικά να ελευθερώσει επαρκώς τη μνήμη. Είναι αλήθεια ότι πολλοί προγραμματιστές, ακόμη και αρχάριοι, δεν σκέφτονται ή δεν καταλαβαίνουν τέτοια πράγματα, και τότε μπορεί η εφαρμογή τους να απειλήσει τη διάρκεια ζωής της μπαταρίας ή/και να καταναλώσει άσκοπα πόρους του συστήματος, ακόμη και στο παρασκήνιο.

ετυμηγορία

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

Πηγή: Macworld.com

Συγγραφείς: Jakub Požárek, Martin Doubek (ArnieX)

 
Έχετε και εσείς κάποιο πρόβλημα να λύσετε; Χρειάζεστε συμβουλές ή ίσως βρείτε τη σωστή εφαρμογή; Μη διστάσετε να επικοινωνήσετε μαζί μας μέσω της φόρμας στην ενότητα Συμβουλευτική, την επόμενη φορά θα απαντήσουμε στην ερώτησή σας.

.