Μετάβαση στο περιεχόμενο


Φωτογραφία
* * * * * 6 ψήφοι

Όλα όσα πρέπει να ξέρετε για το multitasking στο iOS


  • Please log in to reply
58 μηνύματα σε αυτό το θέμα

#1   sepsis

sepsis

    iPH Hero

  • 8,236 μηνύματα
  • Twitter:@hsouris
  • Φύλο: Άντρας
  • Κινητό: iPhone 5
  • Tablet:iPad 3 +4G

Δημοσίευση 03/01/2012 - 13:58

O Fraser Speirs σε ένα πολύ ενδιαφέρον δημοσίευμά του εξηγεί τι πραγματικά είναι το multitasking στο iOS και απομυθοποιεί ορισμένες συμβουλές για την αναγκαιότητα του κλεισίματος εφαρμογών από την multitasking bar.

Αναρτημένη εικόνα


Το αρχικό δημοσίευμα του Speirs μπορείτε να το διαβάσετε εδώ αλλά παρακάτω παραθέτω την (ελεύθερη) ελληνική μετάφραση που ελπίζω να σας φανεί ιδιαίτερα χρήσιμη στο να κατανοήσουμε όλοι τον τρόπο λειτουργίας του multitasking στο iOS.

Υπάρχει μια συμβουλή για το iOS που είναι πολύ διαδεδομένη αλλά είναι λάθος. Η συμβουλή αυτή είναι η εξής:

“Όλες οι εφαρμογές στην multitasking bar στο iOS είναι ενεργές και καθυστερούν την συσκευή, τρώνε μνήμη και μειώνουν την αυτονομία. Για να βελτιστοποιήσετε την απόδοση και επίδοση της συσκευής πρέπει να τις κλείσετε χειροκίνητα.”

Η παραπάνω πρόταση είναι πέρα για πέρα λανθασμένη για τους λόγους που θα δούμε παρακάτω. Να είμαστε ξεκάθαροι: Η multitasking bar περιέχει μια λίστα με όλες τις εφαρμογές που έχετε χρησιμοποιήσει πρόσφατα και όχι με τις εφαρμογές που είναι ενεργές. Ο χρήστης δεν χρειάζεται σχεδόν ποτέ να διαχειριστεί αυτές τις εφαρμογές. Από τη στιγμή που πατιέται το home button η εφαρμογή σχεδόν πάντα σταματά να τρέχει και συνεπώς δεν καταναλώνει CPU και μπαταρία και η RAM αποδεσμεύεται στη συνέχεια εάν χρειαστεί.

Το iOS διαθέτει πέντε καταστάσεις για τις εφαρμογές. Αυτές είναι:

Not running - η εφαρμογή έχει τερματιστεί ή δεν έχει ανοιχτεί καν.
Inactive - η εφαρμογή βρίσκεται στην οθόνη αλλά δεν εκτελεί τίποτα (για παράδειγμα όταν η εφαρμογή είναι ανοιχτή αλλά η συσκευή κλειδωμένη).
Active - η συνηθισμένη κατάσταση που χρησιμοποιούμε μια εφαρμογή.
Background - η εφαρμογή δεν βρίσκεται στην οθόνη αλλά εκτελεί ακόμα κώδικα.
Suspended - η εφαρμογή καταλαμβάνει μνήμη RAM αλλά δεν εκτελεί κώδικα.

Οι καταστάσεις Active και Inactive δεν θα μας απασχολήσουν και θα επικεντρωθούμε στο τι συμβαίνει όταν μια εφαρμογή πάει από το Active στο Background στο Suspended και στο Not Running.

Όταν πατάμε το home button η εφαρμογή από Active γίνεται Background. Όλες σχεδόν οι εφαρμογές μετατρέπονται μετά σε Suspended σε μερικά δευτερόλεπτα. Τεχνικά οι εφαρμογές αυτές παραμένουν στην μνήμη της συσκευής έτσι ώστε να ανοιχτούν πολύ γρηγορότερα κάποια στιγμή αργότερα. Δεν χρησιμοποιούν, όμως, επεξεργαστική ισχύ (CPU) και συνεπώς ούτε μπαταρία.

Δεν απαιτείται, επίσης, να κλείσετε εσείς την εφαρμογή για να εξοικονομήσετε μνήμη αφού το iOS αναλαμβάνει αυτή την δουλειά. Εάν χρειαστεί να ανοιχτεί μια εφαρμογή που χρειάζεται επιπλέον μνήμη, τότε το σύστημα αυτόματα θα αρχίσει να μετατρέπει παλαιότερες εφαρμογές από Suspended σε Not Running. Εάν, τότε, ανοίξετε ξανά μια από αυτές τις εφαρμογές θα ανοίξει από την αρχή σε καθαρή κατάσταση.

Προσέξτε τώρα: όλα τα παραπάνω δεν έχουν καμία σχέση με το τι βλέπετε στην multitasking bar. Η multitasking bar υπάρχει μόνο και μόνο για να μπορείτε να δείτε τις εφαρμογές που έχετε χρησιμοποιήσει πρόσφατα ανεξάρτητα από την κατάσταση (Background, Suspended, Not Running) στην οποία βρίσκονται. Για αυτό, άλλωστε, δεν μπορείτε να δείτε στην multitasking bar την εφαρμογή που έχετε ανοιχτή στην οθόνη σας αυτή την στιγμή.

Background Tasks

Όταν μια εφαρμογή στέλνεται στο Background, τότε μετατρέπεται σε Suspended σε λίγα δευτερόλεπτα όπως είπαμε. Ωστόσο, μερικές εφαρμογές μπορούν να ζητήσουν μια ‘επιμήκυνση’ αυτού του χρόνου για να πραγματοποιηθεί ένα background task.

Για παράδειγμα, μια τέτοια εφαρμογή είναι το Instacast, μια εφαρμογή διαχείρισης podcasts. Όταν το Instacast είναι Active ξεκινά να κατεβάζει νέα podcasts. Εάν πατηθεί το home button, τότε το Instacast έχει πέντε δευτερόλεπτα για να τρέξει στο Background και μετά να γίνει Suspended. Ωστόσο, το Instacast έχει τη δυνατότητα να δηλώσει ένα background task και να επιμηκύνει την περίοδο που μπορεί να μείνει στο Background για να συνεχίσει να κατεβάζει τα podcasts. Αυτή η περίοδος, βέβαια, δεν είναι απεριόριστη και περιορίζεται περίπου στα 10 λεπτά προτού αναγκαστεί να γίνει Suspended. Αυτό γίνεται αυτόματα από το iOS χωρίς να πρέπει να κάνετε κάτι.

Απεριόριστο Background

Όλες οι εφαρμογές έχουν μπορούν να μείνουν στο Background από 5 δευτερόλεπτα μέχρι 10 λεπτά, όπως είδαμε. Υπάρχουν, όμως, και μερικά είδη εφαρμογών που χρειάζεται να τρέχουν απεριόριστα στο background. Συγκεκριμένα, υπάρχουν πέντε είδη εφαρμογών: εφαρμογές που παίζουν μουσική, εφαρμογές που καταγράφουν την τοποθεσία, εφαρμογές που περιμένουν εισερχόμενες κλήσεις VOIP (πχ Skype), εφαρμογές του Newsstand για να κατεβάσουν νέο περιεχόμενο και εφαρμογές που συνεργάζονται με κάποιο εξωτερικό αξεσουάρ.

Οποιαδήποτε καλογραμμένη εφαρμογή που ανήκει σε μία από τις παραπάνω κατηγορίες γίνεται αυτόματα Suspended όταν δεν εκτελούν κάποια εργασία. Για παράδειγμα, όταν το Instacast τελειώσει την αναπαραγωγή ενός podcast γίνεται Suspended. Υπάρχουν και προ-εγκατεστημένες εφαρμογές στο iOS που τρέχουν στο παρασκήνιο συνεχώς, όπως το Mail.

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

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

Περίληψη

Συνοπτικά, ας δούμε τι μάθαμε:

-Εάν κάποιος σας πει ότι όλες οι εφαρμογές στην multitasking bar τρέχουν ή χρησιμοποιούν μπαταρία κτλπ είναι λάθος.
-Όταν πατάτε το home button η εφαρμογή μετατρέπεται από Active σε Background και πολύ γρήγορα σε Suspended όπου δεν καταναλώνει μπαταρία.
-Μια εφαρμογή μπορεί να ζητήσει επιμήκυνση της κατάστασης Background για περίπου 10 λεπτά προτού γίνεται Suspended.
-Εάν υπάρξει πρόβλημα διαχείρισης μνήμης, τότε το iOS αυτόματα μετατρέπει τις Suspended εφαρμογές σε Not Running και επανακτά τη μνήμη τους.
-Πέντε είδη εφαρμογών -ήχου, GPS, VOIP, Newsstand και χρήσης αξεσουάρ- και μερικές προ-εγκατεστημένες μπορούν να τρέχουν απεριόριστα στο παρασκήνιο μέχρι να ολοκληρωθεί η εργασία τους.

Γενικότερα, δεν χρειάζεται να ανησυχείτε για τα background tasks στο iOS. Το λειτουργικό μπορεί να χειριστεί σχεδόν οποιαδήποτε περίπτωση εφαρμογών και όσον αφορά αυτά τα πέντε είδη εφόσον η εφαρμογή είναι σωστά γραμμένη δεν θα έχετε κάποιο πρόβλημα.

Follow me on twitter


Ad

Ad

Team
iPhoneHellas
3,1416 μηνύματα
Twitter: @android
Φύλο: Όπως το δει κανείς
Κινητό: Android
Tablet: Για τα κουνούπια

Γιατί να γίνετε μέλη;

#2   jeanpoul

jeanpoul

    iPH Enthousiast

  • 515 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone X
  • GameCenter:jeanpoulgr

Δημοσίευση 03/01/2012 - 14:04

Ωραια ολα αυτα αλλα πως μποροουμε να εξηγησουμε το skype που σε μενα κ σε j/b κ σε κανονικο τηλ δεν παιζει πλεον στο backround?Ακομα νομιζω οτι πολλοι εχουν αυτο το θεμα... ειναι θεμα εφαρμογης ή καποιο προβλημα του τηλ?

Τελευταία επεξεργασία από: jeanpoul, 03/01/2012 - 14:10.


#3   gismoduck1978

gismoduck1978

    iPH User

  • 163 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 4
  • Tablet:iPad 2

Δημοσίευση 03/01/2012 - 14:17

Ευχαριστουμε.Χρησιμες οδηγιες αλλα δεν νομιζω οτι υπαρχει προβλημα στο να θετουμε απο μονοι μας τις εφαρμογες σε Not running μια ωρα νωριτερα και να μη περιμενουμε το ios να τις βαλει σε Background και μετα απο λιγο σε Suspended και οταν θα χρειαστει την μνημη να τις βαλει σε Not running και........και......και

#4   iguanos

iguanos

    iPH newbie

  • 14 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 4S

Δημοσίευση 03/01/2012 - 14:21

Εγω παντως σε σπασμενο 3gs απο οτι βλεπω μερικες εφαρμογες καταναλωνουν ram οταν ειναι backround γιατι οταν τις κλεινω βλεπω και παλι η Ram να ανεβαινει στα φυσιολογικα.Επισης εχω παρατηρησει οτι μπορω να μην εχω ανοιχτες εφαρμογες και να επιλεξω free memory και παλι να μου απελευθερωσει memory!!!

#5   gismoduck1978

gismoduck1978

    iPH User

  • 163 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 4
  • Tablet:iPad 2

Δημοσίευση 03/01/2012 - 14:30

Εγω παντως σε σπασμενο 3gs απο οτι βλεπω μερικες εφαρμογες καταναλωνουν ram οταν ειναι backround γιατι οταν τις κλεινω βλεπω και παλι η Ram να ανεβαινει στα φυσιολογικα.Επισης εχω παρατηρησει οτι μπορω να μην εχω ανοιχτες εφαρμογες και να επιλεξω free memory και παλι να μου απελευθερωσει memory!!!

Εννοειτε οτι γινεται αυτο αλλα δεν ειναι το θεμα αν καταναλωνουν μνημη ή οχι.Το θεμα ειναι αν καταναλωνουν επεξεργαστικη ισχυ!Εκει τρωει μπαταρια.Εγω απλα ειπα οτι μπορουμε απλα να κανουμε χειροκινητα αμεσως την διαδικασια που θα κανει το ios μετα απο καποιο χρονικο διαστημα.

#6   sepsis

sepsis

    iPH Hero

  • 8,236 μηνύματα
  • Twitter:@hsouris
  • Φύλο: Άντρας
  • Κινητό: iPhone 5
  • Tablet:iPad 3 +4G

Δημοσίευση 03/01/2012 - 14:32

Ευχαριστουμε.Χρησιμες οδηγιες αλλα δεν νομιζω οτι υπαρχει προβλημα στο να θετουμε απο μονοι μας τις εφαρμογες σε Not running μια ωρα νωριτερα και να μη περιμενουμε το ios να τις βαλει σε Background και μετα απο λιγο σε Suspended και οταν θα χρειαστει την μνημη να τις βαλει σε Not running και........και......και


Θεωρητικά δεν υπάρχει απλώς νταξ είναι λίγο περίεργο να κάθεσαι κάθε φορά που κλείνεις μια εφαρμογή να την βγάζεις και από την multitasking bar. Εξάλλου αυτό που λέμε είναι ότι μια Not Running εφαρμογή μπορεί και πάλι να παραμείνει στην multitasking bar αφού εκεί φαίνονται οι εφαρμογές που έχουμε χρησιμοποιήσει πρόσφατα.

Εγω παντως σε σπασμενο 3gs απο οτι βλεπω μερικες εφαρμογες καταναλωνουν ram οταν ειναι backround γιατι οταν τις κλεινω βλεπω και παλι η Ram να ανεβαινει στα φυσιολογικα.Επισης εχω παρατηρησει οτι μπορω να μην εχω ανοιχτες εφαρμογες και να επιλεξω free memory και παλι να μου απελευθερωσει memory!!!


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

Follow me on twitter


#7   Finder

Finder

    iPH Member

  • 211 μηνύματα
  • Φύλο: Δ/Α

Δημοσίευση 03/01/2012 - 14:42

Το Skype θελει κλεισιμο (αν δεν κανουμε sign-out), γιατι μια μερα απο Γλυφαδα προς Πειραια ειχα πατησει το Home Button και μεχρι να φτασω Πειραια μου ειχε φαει μια καρτα 10€.

Μια φορα που ειχα πατησει Home Button στο Navigon και δεν το ειχα κλεισει απο το Multitasking, μου εσκασε Notification απο το Navigon πως το προγραμμα θα κλεισει για να μην τρωει μπαταρια κλπ.

Μονο αυτα τα δυο ειδα πως θελουν manual κλεισιμο.

#8   DaKnOb

DaKnOb

    iPH Contributor

  • 1,336 μηνύματα
  • Twitter:@DaKnObCS
  • Φύλο: Άντρας
  • Κινητό: iPhone 6
  • GameCenter:DaKnObCS

Δημοσίευση 03/01/2012 - 14:58

Μου άρεσε που όταν τα έλεγα εγώ με κορόιδευαν... ;)

Σε άλλα κινητά πρέπει να το κάνεις αυτό αλλά στην Apple δεν σε νοιάζει καν. Ο μόνος λόγος που κλείνω κάτι από το multitasking bar είναι γιατί άλλαξα αρχεία και θέλω ένα clean boot.

#9   soiramk

soiramk

    iPH Enthousiast

  • 524 μηνύματα
  • Φύλο: Δ/Α
  • Κινητό: iPhone 6
  • GameCenter:soiramk

Δημοσίευση 03/01/2012 - 15:29

Οκ και λίγο πολύ γνωστά όλα αυτά.
Ούτε εγώ ασχολούμε με το να "κλείνω" τις εφαρμογές.
Τα Low Memory στα diagnostics μπορεί/ξέρει κάποιος dev, έτσι ωραία κ κατανοητά,
να μας ενημερώσει τι είναι;

#10   macliminal

macliminal

    iPH newbie

  • 74 μηνύματα
  • Φύλο: Άντρας

Δημοσίευση 03/01/2012 - 15:44

Το multitasking στο iOS ειναι "multitasking done right" σε αντιθεση με τις android συσκευες οπου συχνα ακουμε τον ορο "true multitasking" και στην ουσια αυτο που εννοουν ειναι πως το multitasking ειναι στην ουσία ίδιο όπως σε ενα desktop λειτουργικό (κάτι το οποίο είναι κατά τη γνώμη μου overkill για ένα mobile λειτουργικό). Σε μια mobile συσκευη ΔΕΝ ΘΕΛΟΥΜΕ ο χρηστης να ασχοληθεί με το τι τρέχει στο background ή οχι. Αυτό θα πρέπει να γίνεται με διαφάνεια απο το ίδιο το λειτουργικό.

Ως προς αυτό, το εν λόγω άρθρο είναι σωστό, δηλαδή η multitasking μπάρα σε iOS είναι στην πραγματικότητα μια μπάρα απο recently opened εφαρμογές οι οποίες μπορεί ακόμη να καταναλώνουν resources ή να είναι τελείως inactive.

Η λέξη κλειδί όμως είναι το "well written apps". Πως ακριβώς μπορεί κάποιος να εγγυηθεί κάτι τέτοιο? Το skype ειναι χαρακτηριστική περίπτωση εφαρμογής από μεγάλο vendor που θα περίμενε κανείς να ειναι well written αλλά μάλλον είναι σημείο αναφοράς για το πως να γράψεις κακό κώδικα σε iOS.

Εν συντομία,

Τις περισσότερες φορές μπορείτε να κλείνετε τις εφαρμογες απο το home button και να μην ασχοληθείτε καθόλου άλλο με αυτες. Σε κάποιες περιπτωσεις όμως καλό είναι να τις κλείνετε και χειροκίνητα. Πχ δεν αφήνω ποτέ το GPS app να εδρεύει στην multitask bar και για καλό και για κακό, συνήθως τερματίζω και τα games όταν σταματάω να ασχολούμε με αυτά. Σε κάθε αλλη περίπτωση δε χρειάζεται να κλείσετε χειροκίνητα μια εφαρμογή (η multitasking μπάρα εξαλλου είναι κατα τη γνωμη μου απο τις πιο χρήσιμες σε επιπεδο UI λειτουργίες του συστηματος)

Αυτα απο εμένα.

#11   larryf13

larryf13

    iPH Member

  • 250 μηνύματα
  • Φύλο: Άντρας
  • GameCenter:larryf13

Δημοσίευση 03/01/2012 - 15:54

Καλή ανάλυση του τύπου.

Χονδρικά μπορούμε να πουμε ο,τι κλείνουμε με το Home Button είναι σα να μην υπάρχει καθόλου και δεν πρέπει να μας απασχολεί. Εξαίρεση μερικές εφαρμογές.

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

π.χ. παίζουμε ένα παιχνίδι και μετά ανοίγουμε ένα άλλο. Αν ξαναγυρίσουμε στο προηγούμενο τότε αυτό θα ανοίξει εκεί που το αφήσαμε. Αν όμως ανοίξουμε 3-4 και μετά πάμε στο αρχικό θα το ξεκινήσει από την αρχή. Σε αυτόν τον κανόνα φυσικά παίζει ρόλο και η φυσική RAM, δηλαδή σε ένα 4άρι iPhone μπορεί να έχουμε καμια 10αρια εφαρμογές που να είναι στη RAM ενώ σε ένα 3GS 5. Χοντρικά πάντα.

Προφανώς Low Memory Warning η εφαρμογή τρώει όταν χρειάζεται περισσότερη RAM από όση μπορεί να της διατεθεί από το λειτουργικό. Δηλαδή έστω σε ένα 3GS έχουμε 120ΜΒ free RAM MAX. Αν μια εφαρμογή απαιτεί πάνω από τόση RAM, δε μπορεί να τρέξει σε αυτή τη συσκευή.

Δεν παίζει ρόλο αν την ξεκινήσουμε με 120ΜΒ Free RAM (όλες οι εφαρμογές κλειστές) ή με 10 ΜΒ free.

Τελευταία επεξεργασία από: larryf13, 03/01/2012 - 15:56.


#12   redararas

redararas

    iPH newbie

  • 95 μηνύματα
  • Φύλο: Άντρας

Δημοσίευση 03/01/2012 - 16:44

Βέβαια αν είσαι λιγάκι ψυχαναγκαστικός όπως εγώ, ενώ ξέρεις τα παραπάνω, θέλεις να έχεις πάντα την multitasking bar καθαρή!

#13   nmout

nmout

    Advanced Member

  • 1,205 μηνύματα
  • Φύλο: Άντρας

Δημοσίευση 03/01/2012 - 17:13

εγω βλεπω οτι οταν τελειωνει η μνημη κανει quit η τρεχουσα εφαρμογη και οχι οι background

#14   DaKnOb

DaKnOb

    iPH Contributor

  • 1,336 μηνύματα
  • Twitter:@DaKnObCS
  • Φύλο: Άντρας
  • Κινητό: iPhone 6
  • GameCenter:DaKnObCS

Δημοσίευση 03/01/2012 - 17:19

Low Memory Warning είναι κομμάτι κώδικα μέσα σε κάθε εφαρμογή που εκτελείται όταν της πει το iOS πως δεν μένει μνήμη.
Π.χ. έχεις 17 εφαρμογές στο multitasking και άνοιξες το Infinity Blade 2. Τότε το iPhone θέλει 2 ΜΒ RAM παραπάνω για να το τρέξει χωρις να κολλάει. Κοιτάει από το τέλος του multitasking bar και βρίσκει την εφαρμογή που τρώει περίπου τόση RAM και της λέει να τρέξει αυτό το κομμάτι κώδικα, το οποίο περιέχει σύμφωνα με τους κανονισμούς του Developer Program κώδικα για να αδειάσει RAM. Όταν η εφαρμογή πει "Τελείωσα, έκανα ο, τι μπορούσα", κοιτάει το iOS και λέει. Άδειασαν 2ΜΒ RAM ή όχι; Και αν όχι, πάει στην επόμενη εφαρμογή.

#15   ifrit

ifrit

    iPH Contributor

  • 1,238 μηνύματα
  • Twitter:@ifritakos
  • Φύλο: Άντρας
  • Κινητό: iPhone XS
  • Tablet:iPad Air
  • GameCenter:ifrit

Δημοσίευση 03/01/2012 - 17:34

Με λίγα λόγια ώρα να αλλάξουμε συνήθειες εμείς που ήμασταν εμμονικοί με αυτό :blush:

Ad

Ad

Team
iPhoneHellas
3,1416 μηνύματα
Twitter: @android
Φύλο: Όπως το δει κανείς
Κινητό: Android
Tablet: Για τα κουνούπια

Γιατί να γίνετε μέλη;



Χρήστες που διαβάζουν αυτό το θέμα: 1

0 μέλη, 1 επισκέπτες, 0 ανώνυμοι χρήστες