Υπάρχουν ακόμα πολλοί άνθρωποι που δεν γνωρίζουν πώς λειτουργεί το 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)
Έχετε και εσείς κάποιο πρόβλημα να λύσετε; Χρειάζεστε συμβουλές ή ίσως βρείτε τη σωστή εφαρμογή; Μη διστάσετε να επικοινωνήσετε μαζί μας μέσω της φόρμας στην ενότητα Συμβουλευτική, την επόμενη φορά θα απαντήσουμε στην ερώτησή σας.
Γεια σας, πολύ ωραίο άρθρο, αλλά αναρωτιέμαι αν έχετε κάποια τεχνική υποστήριξη για αυτό. Επειδη εχω λυσει αρκετες φορες την μπαταρια το βραδυ πριν κοιμηθω και ετυχε με κλειστο wifi και κινητο data να πηρε παραπανω απο οτι σε αλλη περιπτωση με κλειστο το wifi και μονο 3G.
Δυστυχώς, η εμπειρία είναι ότι στο iOS, οι εφαρμογές πρέπει να απενεργοποιούνται χειροκίνητα και το σύστημα δεν λειτουργεί πλέον όπως πριν.
Αντικατέστησα το iPhone μου με ένα Windows Phone (Samsung Omnia W για 6200,-) και η ταχύτητα του συστήματος είναι σε εντελώς διαφορετικό επίπεδο.
Φοβάμαι ότι όταν βγουν τα tablet Windows 8 Metro, θα αντικαταστήσω και το iPad...
@007 – ναι, αν συγκρίνετε τα παλιά iPhone3G με τα νέα WP, τότε ναι (ποιος θα το περίμενε αυτό;) το WP θα είναι αρκετά πιο γρήγορο. Κατά τα άλλα, τα κουτσομπολιά για την Karlulka δεν σου πηγαίνουν καλά και ήταν σκόπιμο να συγκρίνεις το σημερινό HW. Αγόρασα επίσης το WP7 και τελικά κατέληξα στο 4s, το οποίο αντιπροσωπεύει ένα εντελώς διαφορετικό επίπεδο χρηστικότητας από το WP7. Περάστε λοιπόν ευχάριστα και ατελείωτα scroll μέσα από τα πλακάκια.
Συμφωνώ απόλυτα με την Paja
Θα συνέβαλα πάλι από τα συντρίμμια ενός άλλου βαρελιού - Samsung Galaxy S και iPhone 4 - θα έλεγα συγκρίσιμες από άποψη ηλικίας; Την εποχή του iOS 4, και όσον αφορά τη χρηστικότητα και την ταχύτητα κάπου αλλού εκτός από το Android, η Apple έχει λύσει πολύ καλά την έννοια της εργασίας με εφαρμογές, αλλά δεν ισχύει πλέον το ίδιο με το Android. Τελικά κατέληξα στο 4S πάντως και δεν έχω παράπονο, γιατί "απλά δουλεύει" .. και δουλεύει πολύ γρήγορα!
Ωραία η θεωρία... Αλλά στην πράξη, εξακολουθώ να κλείνω την εφαρμογή στο μπαρ ;)
Ευχαριστώ, πολύ ενδιαφέρον, πραγματιστικό, ενδιαφέρον, δεν του λείπει η ταλάντευση και το βάθος. Υπογραμμίζοντας σημαντικά την εμμονή της σημερινής νεολαίας με αυτό το απαγορευμένο σήμα! Αλλά την ευχαριστώ, όπως και για αυτό το άρθρο.
Το άρθρο είναι εντελώς λάθος.
Η εφαρμογή δεν τερματίζεται όταν πατηθεί το κουμπί Αρχική σελίδα, όπως λανθασμένα αναφέρθηκε, αλλά διακόπτεται. Δηλ. οπωσδήποτε μην διαγράψετε από τη μνήμη και μην τα παρατήσετε. Απλώς σταματήστε την εκτέλεση, το iOS θα δώσει σε αυτήν την εφαρμογή 0% χρόνο CPU. Σίγουρα δεν «ανταλλάσσει» πουθενά στη μνήμη του iDevice, όπως αναφέρεται στο άρθρο. Είναι πραγματικά χάρη στο γεγονός ότι είναι δυνατή η χρήση της εναλλαγής εφαρμογών.
Η εφαρμογή αφαιρείται από τη μνήμη όταν το τηλέφωνο έχει λίγη μνήμη για την εκτέλεση άλλων εφαρμογών με υψηλότερη προτεραιότητα (συνήθως μια άλλη εφαρμογή εκτελείται στο προσκήνιο).
Στην πρώτη περίπτωση, έχεις δίκιο, ήταν μεταφραστικό λάθος. Όσο για την εναλλαγή, δεν μιλάμε για αυτό εδώ, μιλάμε για τη λειτουργική μνήμη, όχι για τον αποθηκευτικό χώρο στη συσκευή iOS.
η εικόνα της εφαρμογής αποθηκεύεται στη μνήμη για περιορισμένο χρονικό διάστημα μέχρι να κληθεί ξανά με εντολή (δείτε 13,7 GB από 16 GB: τα 2,3 GB δεσμεύονται για το σύστημα και την αναστολή εφαρμογής)
Επομένως, είναι απαραίτητο να γίνει διάκριση μεταξύ εφαρμογών όπως η Πλοήγηση, το Skype και άλλες παρόμοιες, αυτές οι εφαρμογές παραμένουν ενεργές ακόμη και στο παρασκήνιο ή μια συγκεκριμένη λειτουργία δεν τελειώνει και συνεχίζει, για παράδειγμα, να στέλνει δεδομένα σχετικά με την τοποθεσία ή τις πληροφορίες τοποθεσίας. Ή, όπως το Vokul σε λειτουργία pord, η ακρόαση και το multitasking εξακολουθεί να ακούει στο παρασκήνιο.
Αυτές οι εφαρμογές αδειάζουν την μπαταρία και είναι απαραίτητο να τις κλείσετε χειροκίνητα και να μην περιμένετε για iOS. με άλλα δεν είναι απαραίτητο, εκεί μόνο σε περίπτωση που η εφαρμογή κολλήσει.
Δεν μπορώ να συμφωνήσω με το άρθρο. Ελάχ. σε ένα iPad 1ης γενιάς (iOS 5.0.1) είναι σαφές αν έχω πολλές "ανοιχτές" εφαρμογές στη γραμμή πολλαπλών εργασιών ή μόνο μερικές. Το iOS προσπαθεί να καθαρίσει τη μνήμη, αλλά προφανώς δεν είναι αρκετό - το μικρό μέγεθος της μνήμης RAM είναι ίσως η μεγαλύτερη αδυναμία του.
οπότε πολλά εξαρτώνται από το σύστημα και το υλικό που χρησιμοποιείται, είναι πολύ λογικό ότι θα είναι χειρότερα σε ένα iPad 1 με iOS 5.0.1 από ό, τι αν ήταν σε ένα iPad 2ης γενιάς
Συγγνώμη φίλε, αυτή είναι μια περιγραφή του ΙΔΑΝΙΚΟΥ τρόπου που πρέπει να λειτουργεί. Δυστυχώς, η πραγματικότητα είναι τελείως διαφορετική και θα το γνωρίζατε αν χρησιμοποιούσατε προϊόντα της Apple, τουλάχιστον όσο εγώ (δηλαδή περιστασιακά).
"Μπορείς συχνά να ακούσεις δεισιδαιμονίες ότι οι εφαρμογές που εκτελούνται στο παρασκήνιο στο iOS γεμίζουν τη λειτουργική μνήμη."
Δεν είναι δεισιδαιμονία, είναι απλώς γεγονός. Εξάλλου το διεκδικείς μόνος σου στο άρθρο.
"Όπως ανέφερα πριν, ο χρήστης δεν χρειάζεται ποτέ να κλείσει τις εφαρμογές που εκτελούνται στο παρασκήνιο."
ΑΝΟΗΣΙΕΣ. Αυτό είναι απλά μαλακίες, προπαγάνδα μήλου, μη με θυμώνεις.
«Αλλά δεν χρειάζεται να το κάνετε αυτό, γιατί το iOS θα το κάνει για εσάς. Εάν έχετε μια απαιτητική εφαρμογή σε αναστολή στο παρασκήνιο, όπως ένα παιχνίδι που χρησιμοποιεί μεγάλη ποσότητα μνήμης RAM, το iOS θα την αφαιρέσει αυτόματα από τη μνήμη όταν είναι απαραίτητο και μπορείτε να την επανεκκινήσετε πατώντας το εικονίδιο της εφαρμογής.
Δεν είναι αλήθεια. Η κατάσταση είναι λίγο διαφορετική. Χαρακτηριστικό παράδειγμα – έχω απαιτητικές εφαρμογές που τρέχουν στο παρασκήνιο, χρειάζομαι παιχνίδια. Εκκινώ το πρόγραμμα περιήγησης, ανοίγω μερικές καρτέλες -> χρειάζομαι περισσότερη μνήμη. Τι θα συμβεί? Συνεχίζω να απαιτώ εφαρμογές στο παρασκήνιο, αντιθέτως ΠΕΦΤΕΙ Ο ΙΔΙΟΣ ΤΟ BROWSER. Αν κλείσω χειροκίνητα τις απαιτητικές εφαρμογές, το πρόγραμμα περιήγησης λειτουργεί για μεγάλο χρονικό διάστημα χωρίς κανένα πρόβλημα.
Αυτό είναι πράξη, όχι θεωρία. Και εκπλήσσομαι που, ως μακροπρόθεσμος χρήστης ενός προϊόντος της Apple, εξακολουθείτε να μην το γνωρίζετε αυτό.
Ευχαριστώ, αυτό περιγράφεται πολύ καλά και εξηγείται καλά. Με βοήθησες αρκετά ;-) ♥
Για αρχή, δεν είμαι ούτε υπέρ ούτε κατά του iOS, όπως και με το Android, αλλά υπάρχουν μερικά περίεργα πράγματα εδώ, αν όπως γράφεται εδώ: "σπάνια συναντάς ένα crash εφαρμογής με το iOS", τότε με το Android apps crash περίπου μια φορά το χρόνο: -Π
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Ναι, αλλά οι περιπτώσεις που πρέπει να κλείσετε την εφαρμογή χειροκίνητα είναι πραγματικά ελάχιστες, το χρησιμοποίησα περίπου μία φορά; ;-) και το να δώσω link για το συγκριτικό τεστ από το Mobilemania είναι εντελώς άσκοπο, όταν θέλω να διαβάσω για τη διαφήμιση που πλήρωσε η Google, θα ρίξω μια ματιά εκεί ;-) ο καθένας μπορεί να πάρει οποιοδήποτε τηλέφωνο android στα χέρια του και αυτό δεν θα λειτουργεί καθαρά, δηλαδή, με εξαίρεση το Galaxy Nexus, το οποίο είναι το σύστημα λίγο-πολύ εξατομικευμένο. Συνολικά, το android είναι μια καταστροφή
@Mek – Χρησιμοποιώ καθημερινά προϊόντα Apple εδώ και αρκετά χρόνια και αυτό δεν μου έχει συμβεί ποτέ, οπότε η θεωρία σας κατά κάποιο τρόπο δεν λειτουργεί.
OT:
@redakce – Μπορείτε να δείτε ότι ο ιστότοπος δουλεύεται συνεχώς ή κάτι συμβαίνει με αυτόν, αλλά έχω την αίσθηση ότι δεν χρειάζεται μια εβδομάδα για να λειτουργήσουν όλα όπως θα έπρεπε. Και πραγματικά δεν έρχομαι πια εδώ, γιατί η νέα εμφάνιση δεν μου ταιριάζει. Τουλάχιστον χρησιμοποίησα την έκδοση για κινητά στο iPhone, αλλά τώρα δεν λειτουργεί καθόλου - πώς γίνεται; Προς το παρόν δεν απαντούν σε αναρτήσεις στα σχόλια.
@SteveJSF Δυστυχώς, τα πράγματα δεν εξελίσσονται πάντα όπως τα θέλουμε. Όσο για τις απαντήσεις, το νέο πρόσθετο SEO τις έσπασε, αυτή τη στιγμή βρίσκεται υπό επίλυση.
Το WP-Touch διέκοψε επίσης την υπηρεσία μας για κάποιο λόγο, οπότε αποφασίσαμε να βρούμε μια καλύτερη λύση από αυτήν την προσθήκη. Έτσι μπορείτε να περιμένετε τα επόμενα νέα σύντομα :-)
Ωραίο άρθρο. Όσον αφορά την πρακτική, θα ήθελα να πω ότι συμφωνώ με πολλά πράγματα και τις περισσότερες φορές λειτουργεί όπως αναφέρθηκε, αλλά δυστυχώς υπάρχουν ακόμα κακογραμμένες εφαρμογές που δεν συμπεριφέρονται σωστά και μετά υπάρχουν περιπτώσεις όπως αυτή σημειώνεται από ορισμένους αναγνώστες. Νομίζω ότι το Skype είναι ένα πολύ καλό παράδειγμα, ξέρω από την πρακτική ότι τρέχει ακόμα στο παρασκήνιο (και αυτό είναι εντάξει και έτσι πρέπει), αλλά το πρόβλημα είναι ότι αυτή η εφαρμογή αδειάζει πολύ την μπαταρία της συσκευής και Δεν μπορώ να το δω σωστά πια. Αντίστροφα, εφαρμογές όπως το Facebook, το Badoo κ.λπ. επίσης τρέχουν ακόμα στο παρασκήνιο, αλλά η κατανάλωσή τους είναι σχεδόν ανεπαίσθητη (τουλάχιστον δεν παρατηρώ καμία). Οπότε νομίζω ότι το σφάλμα είναι στις μεμονωμένες εφαρμογές. Αν ήξερες ποιες, θα αρκούσε να απενεργοποιήσεις χειροκίνητα μόνο αυτές!
Έτσι, η πρακτική είναι ότι το Facebook τρέχει όπως χρειάζεται και το Skype μόνο όταν χρειάζεται.
Λοιπόν, από την άλλη, εάν πρέπει να εξοικονομήσω μπαταρία και ξέρω ότι πρέπει να κρατήσω το iPhone "ζωντανό" όσο το δυνατόν περισσότερο, απενεργοποιώ επίσης οτιδήποτε περιττό στο multitasking, αλλά κυρίως δεν έχει μεγάλο αντίκτυπο. αλλά αν χρειαστεί περιορίζω το 3G, όλα τα mobile internet, το WiFi, τις υπηρεσίες τοποθεσίας , τη λειτουργία αεροπλάνου, την ένταση φωτισμού κ.λπ. Στα πλαίσια της ρουτίνας, απενεργοποιώ και τις προαναφερθείσες εφαρμογές στο multitasking.
Οπότε προσωπικά πιστεύω ότι το άρθρο είναι αλήθεια, δυστυχώς κάποιοι προγραμματιστές διαψεύδουν αυτά τα πράγματα με τις εφαρμογές τους, επειδή οι εφαρμογές τους είναι λανθασμένες και κατά τη γνώμη μου υπάρχουν μόνο δύο λύσεις για αυτό 1. Εάν είναι δυνατόν να μην χρησιμοποιήσετε την εφαρμογή και να βρείτε εναλλακτική, αν είναι δυνατόν, ή 2. Εάν δεν είναι δυνατό, δείτε π.χ. Skype, γράψτε το στον συγκεκριμένο προγραμματιστή στην αναφορά και ελπίζετε ότι θα κάνει κάτι γι' αυτό.
Μπορεί να μην έχει νόημα η μη αυτόματη απενεργοποίηση εφαρμογών, αλλά το κάνω ούτως ή άλλως. Προσπάθησα επίσης να μην απενεργοποιήσω το σύστημα εφαρμογών, να τις αφήσω να τρέξουν (ή να τις αφήσω να κοιμούνται στο παρασκήνιο) και η διάρκεια ζωής της μπαταρίας ήταν πολύ χαμηλότερη, ήταν επίσης απαραίτητο να επανεκκινήσω το iPad 2 μετά από περίπου τρεις εβδομάδες, ανταποκρίθηκε αργά. Οπότε κλείνω τις εφαρμογές χειροκίνητα, η μπαταρία διαρκεί περισσότερο, έκανα πρόσφατα επανεκκίνηση την ημέρα των Χριστουγέννων και λειτουργεί μια χαρά.
Παρεμπιπτόντως, κάνω το ίδιο πράγμα στο Mac OS X, απλά κλείνω την εφαρμογή που δεν χρειάζομαι (CMD+Q), είναι καλύτερο από το να κοιμάται στο παρασκήνιο και να τρώει άσκοπα τη μνήμη RAM (κάτι που μπορεί το OS X" δεν λειτουργεί με πολύ καλά). Έχω λίγη μνήμη RAM, μόνο 8 GB, αλλά με 7 GB στα Windows 8, το σύστημα δεν αντέδρασε αργά ούτε αλλάζει, στο OS X αυτό είναι ένα αρκετά κοινό φαινόμενο (δεν έκλεισα ποτέ τον υπολογιστή, το κάνω και με Mac, οπότε ένας μήνας και περισσότερος χρόνος λειτουργίας δεν αποτελεί εξαίρεση, το πρόβλημα είναι ότι μερικές φορές πρέπει να κάνω επανεκκίνηση του Mac ως προληπτικό μέτρο για να ελευθερώσω τη μνήμη RAM και να "επιταχύνω", τα Windows 7 δεν το χρειάζονται).
Με ενδιαφέρει περισσότερο πώς να εκτινάξω την εφαρμογή. Αυτό που μου συνέβη ήταν ότι η εφαρμογή (συγκεκριμένα στο Geocaching) μπήκε σε μια κατάσταση που φόρτωνε κάτι από τον γονικό διακομιστή και κόλλησε σε αυτήν την κατάσταση. Το κουμπί Home λειτούργησε, μετά την επανεκκίνηση επέστρεψε στην παγωμένη κατάσταση (εκεί που σταμάτησα). Χειροκίνητη έξοδος (στο μενού πολλαπλών γευσιγνωσίας, κρατήστε πατημένο το εικονίδιο και μείον για να κλείσετε) = η εφαρμογή εξαφανίστηκε, μετά την επανεκκίνηση άνοιξε στην αρχική της κατάσταση όπου πάγωσε. Έτσι έκλεισα τα πάντα, έκλεισα το τηλέφωνο, το άνοιξα, έκανα διπλό κλικ στο HOME και ιδού - οι εφαρμογές ήταν όλες εκεί όπως ήταν πριν κλείσουν λίγο πριν σβήσουν. Ούτε η επανεκκίνηση βοήθησε - κρατήστε το σπίτι και πάνω μέχρι να ζεσταθεί. Το μόνο πράγμα που βοήθησε ήταν η αφαίρεση της εφαρμογής από το τηλέφωνο, η επανεκκίνηση και η επανεγκατάστασή της στο τηλέφωνο. Κάπως δεν το πήρα.
Αυτή η διαχείριση πολλαπλών εργασιών λειτουργεί και εναπόκειται στους προγραμματιστές να αντιμετωπίσουν αυτές τις καταστάσεις. Για όσους ενδιαφέρονται για μια πιο αναλυτική και επαγγελματική περιγραφή της όλης κατάστασης, θα γράψω εδώ πώς είναι.
Η εφαρμογή μπορεί να απαντήσει σε συνολικά 6 καταστάσεις και αυτές οι καταστάσεις είναι:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
η εφαρμογή θα τερματιστεί
applicationDidReceiveMemoryWarning
Τώρα θα προσπαθήσω να περιγράψω αυτές τις καταστάσεις με περισσότερες λεπτομέρειες.
applicationWillResignActive – αυτή η κατάσταση σημαίνει ότι στο μέλλον (λίγα χιλιοστά του δευτερολέπτου) η εφαρμογή θα παραιτηθεί ως ενεργή εφαρμογή (δηλαδή η εφαρμογή στο προσκήνιο) αυτό συμβαίνει για παράδειγμα όταν λαμβάνετε μια κλήση ενώ χρησιμοποιείτε την εφαρμογή, αλλά ταυτόχρονα όταν αυτή η μέθοδος θα ενεργοποιηθεί ακόμη και πριν η εφαρμογή μεταβεί στο παρασκήνιο, επομένως πρέπει να λάβετε υπόψη αυτές τις αλλαγές. Αυτή η μέθοδος είναι επίσης κατάλληλη ώστε, για παράδειγμα, να αναστέλλει όλες τις δραστηριότητες που εκτελεί όταν υπάρχει μια εισερχόμενη κλήση και να περιμένει μέχρι το τέλος της κλήσης.
applicationDidEnterBackground - αυτή η κατάσταση υποδηλώνει ότι η εφαρμογή έχει εισέλθει στο παρασκήνιο, οι προγραμματιστές θα πρέπει να χρησιμοποιήσουν αυτήν τη μέθοδο για να αναστείλουν όλες τις διεργασίες που δεν χρειάζεται απαραίτητα να εκτελούνται στο παρασκήνιο και να καθαρίσουν τη μνήμη των αχρησιμοποίητων δεδομένων και άλλων διεργασιών, για παράδειγμα, χρονόμετρα λήξης, απαλοιφή από εικόνες φορτωμένες στη μνήμη που δεν θα χρειαστούν απαραίτητα ή τερματίζουν τη σύνδεση με τους διακομιστές εάν δεν είναι κρίσιμο για την εφαρμογή να ολοκληρώσει τη σύνδεση στο παρασκήνιο. Βασικά, αυτή η μέθοδος όταν καλείται στην εφαρμογή θα πρέπει να χρησιμοποιείται για την πλήρη αναστολή της εφαρμογής, εάν κάποιο μέρος της δεν απαιτείται να εκτελεστεί στο παρασκήνιο.
applicationWillEnterForeground – αυτή η κατάσταση είναι η αντίθετη από την πρώτη κατάσταση κατά την οποία η εφαρμογή θα μεταβεί στην ενεργή κατάσταση. Αυτή η κατάσταση εφαρμογής σημαίνει απλώς ότι στα επόμενα χιλιοστά του δευτερολέπτου η εφαρμογή ύπνου θα συνεχίσει από το παρασκήνιο και θα εμφανιστεί στο προσκήνιο (η εφαρμογή μπαίνει στο προσκήνιο), αυτή η μέθοδος θα πρέπει να χρησιμοποιηθεί από τους προγραμματιστές για να συνεχίσουν τυχόν διεργασίες που ήταν ανενεργές ενώ η εφαρμογή ήταν στο παρασκήνιο, οι συνδέσεις με διακομιστές θα πρέπει να αποκατασταθούν, τα χρονόμετρα να επαναφέρονται, οι εικόνες και τα δεδομένα να φορτώνονται στη μνήμη και άλλες απαραίτητες διεργασίες μπορούν να συνεχιστούν λίγο πριν ο χρήστης δει ξανά τη φορτωμένη εφαρμογή.
applicationDidBecomeActive – αυτή η κατάσταση υποδεικνύει ότι η εφαρμογή μόλις έγινε ενεργή μετά την επαναφορά στο προσκήνιο, αυτή είναι μια μέθοδος που μπορεί να χρησιμοποιηθεί για να γίνουν πρόσθετες προσαρμογές στη διεπαφή χρήστη ή να επαναφέρετε τη διεπαφή χρήστη στην αρχική της κατάσταση, κ.λπ. αυτή η μέθοδος συμβαίνει στην πραγματικότητα όταν ο χρήστης μπορεί ήδη να δει στην οθόνη, επομένως είναι απαραίτητο να προσδιοριστεί από τον ισολογισμό τι συμβαίνει σε αυτήν τη μέθοδο και στην προηγούμενη μέθοδο. Καλούνται το ένα μετά το άλλο με διαφορά μερικών χιλιοστών του δευτερολέπτου.
applicationWillTerminate - αυτή η κατάσταση συμβαίνει λίγα χιλιοστά του δευτερολέπτου πριν από τον τερματισμό της εφαρμογής, δηλαδή πριν από τον τερματισμό της εφαρμογής. Είτε χειροκίνητα από multitasking είτε κατά την απενεργοποίηση της συσκευής. Αυτή η μέθοδος θα πρέπει να χρησιμοποιείται για την αποθήκευση επεξεργασμένων δεδομένων και για τον τερματισμό όλων των δραστηριοτήτων και τη διαγραφή δεδομένων που δεν θα χρειάζονται πλέον.
applicationDidReceiveMemoryWarning - και αυτή είναι μια κατάσταση που συζητείται πολύ εδώ, εάν είναι απαραίτητο, το iOS θα αφαιρέσει την εφαρμογή από τη μνήμη εάν χρησιμοποιεί άσκοπα πόρους του συστήματος. Δεν ξέρω ακριβώς τι κάνει το iOS με τις εφαρμογές παρασκηνίου, αλλά αν χρειάζεται μια εφαρμογή για να απελευθερώσει πόρους σε άλλες διεργασίες, το ζητά με μια προειδοποίηση μνήμης να απελευθερώσει τους πόρους που κατέχει. Αυτή λοιπόν η μέθοδος καλείται στην εφαρμογή και οι προγραμματιστές θα πρέπει να την εφαρμόσουν έτσι ώστε η εφαρμογή να εγκαταλείψει τη μνήμη που έχει, να αποθηκεύσει τα επεξεργασμένα και να διαγράψει τα περιττά δεδομένα από τη μνήμη και διαφορετικά να ελευθερώσει επαρκώς τη μνήμη. Είναι αλήθεια ότι πολλοί προγραμματιστές, για παράδειγμα αρχάριοι, δεν σκέφτονται τέτοια πράγματα ή δεν τα καταλαβαίνουν, και τότε μπορεί η εφαρμογή τους να θέσει σε κίνδυνο τη διάρκεια ζωής της μπαταρίας ή/και να καταναλώσει άσκοπα πόρους του συστήματος ακόμη και στο παρασκήνιο. Δεν ξέρω πώς θα συμπεριφερθεί το iOS εάν η εφαρμογή δεν κάνει τίποτα αφού λάβει μια προειδοποίηση μνήμης και συνεχίσει να καταναλώνει πόρους συστήματος όπως πριν.
Αυτές οι λίγες καταστάσεις και οι σχετικές μέθοδοι βρίσκονται πίσω από ολόκληρο το "multitasking" στο iOS... είναι ένα εξαιρετικό σύστημα εάν οι προγραμματιστές δεν αγνοήσουν την ανάγκη να είναι υπεύθυνοι για το τι θα εκπέμψουν οι εφαρμογές στις συσκευές των χρηστών τους εάν ελαχιστοποιηθούν ή λάβετε προειδοποιήσεις από το σύστημα και άλλα…
Ελπίζω ότι αυτή η σύντομη περιγραφή θα σας βοηθήσει να κατανοήσετε πώς η εφαρμογή εμπλέκεται στην ομαλή λειτουργία όλων. Επομένως, είναι σχεδόν πιθανό να πούμε ότι πρόκειται για λάθος λανθασμένης χρήσης από τον χρήστη, το οποίο μπορεί να γίνει κατανοητό ως - εάν χρησιμοποιείτε κυρίως δωρεάν εφαρμογές από ερασιτέχνες προγραμματιστές σε μεγάλους αριθμούς, η συσκευή σας iOS θα λειτουργεί χειρότερα από ό, τι εάν χρησιμοποιείτε μεγάλο αριθμός δωρεάν και επί πληρωμή εφαρμογών από έμπειρους ή επαγγελματίες προγραμματιστές. Αυτό δεν σημαίνει ότι δεν υπάρχουν εξαιρέσεις και στους δύο κύκλους. Το Foursquare, για παράδειγμα, συμπεριφέρεται αρκετά περίεργα και απαιτητικά και ταυτόχρονα θα περίμενε κανείς ότι πρόκειται για πολύ ικανούς προγραμματιστές που δίνουν πολύ χρόνο στη διαχείριση μνήμης και μπαταρίας, αλλά ισχύει το αντίθετο. Το μεγαλύτερο πρόβλημα με το 4SQ είναι η επικοινωνία με τους διακομιστές, που συχνά κολλάει και κατακλύζεται. Αυτό είναι απλώς ένα παράδειγμα του γεγονότος ότι ακόμη και γνωστές εφαρμογές έχουν προβλήματα, κάτι που δεν αλλάζει το γεγονός ότι το 4SQ είναι μια εξαιρετική υπηρεσία.
Καλή διασκέδαση Μήλα!! :)
Προσθέσαμε τις πληροφορίες στο άρθρο με την ευγενική άδεια του συγγραφέα ;-)
Λυπάμαι, το ENTER ήταν παντού ανάμεσα στις παραγράφους, θα μπορούσαν να κάνουν κάτι για αυτό εδώ, ώστε τα σχόλια να έχουν τουλάχιστον λίγη ΜΟΡΦΟΠΟΙΗΣΗ ΠΛΟΥΣΙΟΥ ΚΕΙΜΕΝΟΥ.
ArnieX: ευχαριστώ για το σχόλιο!!
Προς Faramir: Απλώς για το πρόβλημά σου, δεν ξέρω αν θα βοηθήσει στην περίπτωσή σου, αλλά ξέρω από τη δική μου εμπειρία ότι αν κλείσεις την εφαρμογή (στο multitasking) χρειάζονται μερικά δευτερόλεπτα μέχρι να κλείσει, οπότε αν το σβήσεις, σου προτείνω να περιμένεις μερικά δευτερόλεπτα (περιμένω περίπου 10 δευτερόλεπτα για να είμαι σίγουρος) μέχρι να τελειώσει σίγουρα και μόνο τότε το ξαναρχίζω.
Καλώς ήρθες ;) Θα χαρώ να βοηθήσω αν έχω την ευκαιρία να συνεισφέρω.
Πώς υποτίθεται ότι είναι με το Meeb, όταν μπαίνω στο ICQ ή στο FB chat μέσω αυτού, αποσυνδέεται αυτόματα μετά από 10 λεπτά και βγαίνω εκτός σύνδεσης ή συνεχίζει να λειτουργεί; ευχαριστω για την διευκρινηση :P
Μετά από δέκα λεπτά, η σύνδεση της εφαρμογής στο Διαδίκτυο απλά διακόπτεται. Ωστόσο, θα εξακολουθείτε να είστε συνδεδεμένοι στον διακομιστή Meeba και θα λαμβάνετε μια ειδοποίηση push εάν κάποιος σας γράψει. Αφού ανοίξετε ξανά την εφαρμογή, η σύνδεση θα δημιουργηθεί σε λίγο και μπορείτε να συνεχίσετε να συνομιλείτε ευχάριστα.
Οπότε, αν κατάλαβα σωστά το άρθρο που συνδέσατε, τα στατιστικά αναφέρονται μόνο σε σφάλματα εφαρμογών όταν ξεκινούν, που είναι ένα αρκετά μικρό ποσοστό των περιπτώσεων όπου μπορεί να προκύψουν σφάλματα. Επομένως, είναι αδύνατο να συμπεράνουμε από αυτή την «έρευνα» ότι το iOS είναι λιγότερο σταθερό κατά τη γνώμη μου. Επιπλέον, ο μεταφραστής του άρθρου που ελήφθη από το Forbes ξέχασε να αναφέρει ότι η εταιρεία που παρέχει δεδομένα για σφάλματα εφαρμογών υποστηρίζεται μεταξύ άλλων από την Google ("Crittercism, που υποστηρίζεται από την Google Ventures,...").