Jakie są główne różnice między implementacjami wielozadaniowości aplikacji na Androida i iPhone'a?

9

Jakie są główne różnice między implementacjami wielozadaniowości Androida i iPhone'a na poziomie aplikacji?

(Nie przekształcajmy tego w subiektywny argument fanboya?)


źródło

Odpowiedzi:

6

To nie jest odpowiedź na twoje pytanie, ale warto wyjaśnić, że oba systemy operacyjne są w pełni wielozadaniowe [1] pod maską (o ile mogą i wykonują wiele procesów).

Twoje pytanie wyraźnie dotyczy wielozadaniowości na poziomie aplikacji („czy mogę pozostawić jedną aplikację działającą podczas korzystania z innej?”), Która jest stosunkowo nowym zastosowaniem tego terminu i nie zawsze jest dobrze zdefiniowana, nawet jeśli ma pewne oczywiste przykłady (takie jak słuchanie Pandory podczas czytania wiadomości e-mail). W szczególności wiele aplikacji nie musi działać w tle, aby zaprezentować się użytkownikowi tak, jakby nigdy nie przestało działać, o ile zapisuje / przywraca swój stan. Aplikacje, które muszą wykonywać okresowe operacje (takie jak sprawdzanie poczty lub wyskakujące alarmy), również nie muszą działać w tle; mogą być czasami wywoływane przez system operacyjny. Dużym problemem są zwykle aplikacje wymagające stałego procesora w tle, takie jak Pandora.

Ogólnie rzecz biorąc, Apple ciężko pracował, aby zniechęcić lub zapobiec ciągłym działaniom aplikacji w tle, podczas gdy Android wydaje się bardziej otwarty na to. Ale są zbieżne, ponieważ Apple pozwala aplikacjom takim jak Pandora działać w tle, a Android zapewnia bogatsze narzędzia, które zniechęcają do niepotrzebnych zadań w tle, gdy wystarczyłoby sondowanie lub zapisany stan.

[1] http://en.wikipedia.org/wiki/Computer_multitasking


źródło
1
Słuszna uwaga. Zmienię moje pytanie.
3

O ile mogę powiedzieć.

Wielozadaniowość iPhone'a jest znacznie bardziej ograniczona. Działanie wielozadaniowe musi być jedną z następujących czynności:

  • Dźwięk w tle
  • VoIP
  • Lokalizacja w tle
  • Powiadomienia push
  • Powiadomienia lokalne
  • Rozwiązanie zadania
  • Szybkie przełączanie aplikacji

[Dzięki Gizmodo !]

Z drugiej strony Android pozwala na prawdziwą wielozadaniowość w podobny sposób jak na PC.

Zanim zostanę oskarżony o bycie fanboi na Androida, pozwól mi coś wyjaśnić. Model wielozadaniowości iPhone'a jest więcej niż wystarczający w większości sytuacji i pozwala uniknąć wielu problemów (np. Braków pamięci) towarzyszących systemowi Android.


źródło
Prawdziwa wielozadaniowość? Nie sądzę, by WebOS lub Symbian się zgodzili ...
Ivo Flipse,
2

Android ma inną koncepcję wielozadaniowości na poziomie aplikacji niż komputer. Istnieje więcej rozbieżności między danymi, sposobem ich wyświetlania i operowaniem na danych.

Możesz mieć otwarty tylko jeden widok aplikacji na raz, ale operacje na danych mogą przebiegać w tle. To sprawia, że ​​twórcom aplikacji trudno jest sprawiać wrażenie pulpitu podczas przełączania między aplikacjami, zamykania aplikacji i uruchamiania nowych aplikacji. Czasami zabicie aplikacji jest niemożliwe, ale czasami wydaje się, że nie można przejść do jednego zadania i wrócić. To zależy od tego, jak zrobił to programista aplikacji.

Możesz mieć jednocześnie tyle procesów w tle, że są one zaplanowane jak aplikacje komputerowe. Jądro Linux wybierze, w jaki sposób ustalić, które z nich otrzymają pamięć i zasoby procesora. Gdy telefon zdecyduje, że zabrakło mu pamięci, zacznie zabijać rzeczy, aby zrobić więcej pamięci. Odbywa się to inaczej niż zwykle Linux lub większość innych systemów operacyjnych.

Dane programu są zawsze dostępne. Tak długo, jak aplikacja ma uprawnienia dostępu do danych, jest ona dostępna. Nie jest potrzebna usługa działająca w tle, aby była dostępna.

Apple ma bardzo specyficzne sposoby wykonywania wielu zadań. Są podzbiorem sposobów, na które pozwala Android. W tle mogą działać tylko określone typy aplikacji i muszą być do tego specjalnie zaprogramowane.

Komputer stacjonarny bardzo różni się od obu tych rzeczy. Widok każdej aplikacji, dane i logika przetwarzania danych są często zablokowane razem. Powiedziałbym, że WebOS, Symbian i Maemo / Meego są tego przykładem na urządzeniach mobilnych. Jeśli aplikacja udostępnia swoje dane i przetwarzanie w tle innym „widokom”, będzie to zwykle bardzo specjalna aplikacja.


źródło
Dla przypomnienia, Linux ma OOM Killera we wszystkich swoich wcieleniach, nie jest on specyficzny dla Androida. Jednak na komputerze musisz zająć miejsce wymiany, a także fizyczną pamięć RAM, zanim zacznie to zabijać.
Niezupełnie, zobacz: wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget#s-3.1.5 To jedna z trudnych rzeczy w tym, że Android nie jest tak naprawdę Linuksem, ponieważ musi go załatać w jądrze, aby mógł działać. Spróbuj uruchomić Dalvik na podstawowym jądrze, a to uniemożliwi ci kontynuowanie.