- 24 Σεπ 2014, 21:13
#14857
now we're talking και χαίρομαι που αρχίζουμε να καταλαβαινόμαστε
Λοιπόν, τα states που αρχικά αναφέρθηκαν ως παράδειγμα του "να το ios δεν έχει multitasking", είναι άκυρο. Τα ίδια states έχουν και τα δύο. Με τα λόγια του android: resumed, paused, stopped. ΕΕΠ το λειτουργικό θα κάνει pause ένα activity ακόμα και αν είναι partially obscured, ακόμα και αν έχει απλώς μια διαφάνεια από πάνω του. Ούτε input, ούτε animations τπτ.
Με τα λόγια της google:
During normal app use, the foreground activity is sometimes obstructed by other visual components that cause the activity to pause. For example, when a semi-transparent activity opens (such as one in the style of a dialog), the previous activity pauses. As long as the activity is still partially visible but currently not the activity in focus, it remains paused. [σ.σ. για να καταλάβουμε τι σημαίνει αυτό, ένα native pop-up θα κάνει το app μου να γίνει paused. Ένα IAP pop up του google play, θα κάνει το app μου να γίνει paused]
[...]
When the system calls onPause() for your activity, it technically means your activity is still partially visible, but most often is an indication that the user is leaving the activity and it will soon enter the Stopped state. You should usually use the onPause() callback to:
Stop animations or other ongoing actions that could consume CPU.
Commit unsaved changes, but only if users expect such changes to be permanently saved when they leave (such as a draft email).
Release system resources, such as broadcast receivers, handles to sensors (like GPS), or any resources that may affect battery life while your activity is paused and the user does not need them.
Σε επίπεδο processes (και threads βεβαίως) και τα δύο λειτουργικά επιτρέπουν στα paused "να συνεχίζουν" με πολύ συγκεκριμένους περιορισμούς.
Το απλοϊκό χαζό ios που ούτε multitasking δεν κάνει, έχει ένα ολόκληρο μηχανισμό για να προσδιορίζεις τι και πως θα τρέχει όντας "paused" ώστε η διαχείριση των resources που απαιτεί να γίνει με καλύτερο τρόπο. Ποιο κομμάτι του λειτουργικού μπορεί να αναλάβει την παρακολούθηση τίνος "task" ώστε τελικά να υπάρχει η ελάχιστη δυνατή επιβάρυνση σε μπαταρία και CPU. Χαζό τελείως.
Σαν λειτουργικά όσον αφορά την εκτέλεση apps/activities/delegates/πες τα όπως θες, αυτά έχει.
Και έχουν και κάτι ακόμα φυσικά. Ότι όλα είναι fullscreen. Δλδ το fullscreen ή μη αναφέρεται απλώς στο αν θα βλέπεις τη μπαρα πάνω πάνω με το σήμα, μπαταρία κλπ. Α ναι, και την κάτω μπάρα στο android.
Αυτά είναι τα ΣΤΟΚ λειτουργικά. Δεν υπάρχει τρόπος να εμφανίσεις ένα app/activity ενώ έχεις κάποιο άλλο, χωρίς να κάνεις pause το πρώτο.
Εξ όσων γνωρίζω σε κανένα από τα δύο δεν μπορείς να αρχικοποιήσεις μια windowed (αλλα desktop) εφαρμογή που να καταλαμβάνει το μισό χώρο, ώστε να βλέπεις από πίσω.
Σε κάποια ΜΗ-ΣΤΟΚ, σου δίνουν τα ui elements ώστε τελικά να "ξεγελάσεις" το λειτουργικό, και να έχεις τον τρόπο/χώρο ώστε να καλέσεις ένα δεύτερο activity χωρίς να το πάρει πρέφα ότι πρέπει να στείλει pause. Και έτσι μένουν και τα δύο active όπως γράφεις.
εεπ resize μεθόδους έχουν και τα δύο λειτουργικά, με ανάλογα callbacks στα app/activity (που δλδ και τα δύο πανεύκολα θα μπορούσαν να διαχειριστούν ad hoc αλλαγές) από τότε που υποστηρίζουν rotation της συσκευής (να τη γυρίζεις στο πλάι δλδ και να προσαρμόζεται το app)
Αυτά από εμένα για το σούπερ multitasking του ενός, και το ανύπαρκτο του άλλου.