Dlaczego bateria iPhone'a lepiej NIE zamyka aplikacji?

51

Wiem, że najwyraźniej nie jest dobrym pomysłem zamykanie aplikacji na iPhonie, aby oszczędzać na baterii. Przeczytałem pytania i odpowiedzi: Czy aplikacje wymuszające zamykanie mają jakąkolwiek korzyść na urządzeniach z iOS? ale nadal nie do końca mnie żeluje. Czasami znalazłem ponad 50 uruchomionych aplikacji, więc nie zamykając ich nie ma sensu.

Może jestem trochę stary i nie możesz uczyć starych psów nowych sztuczek, ale czy ktoś może tu wyjaśnić DLACZEGO lepiej jest po prostu uruchomić wszystkie te aplikacje? A kiedy mówię „wyjaśnij”, mam na myśli laika, żebym mógł zrozumieć.

FC
źródło
31
Błędne przekonanie jest częścią „działającą”. Aplikacje w Switcherze niekoniecznie są uruchomione, większość z nich tak naprawdę nie jest. Pomyśl o tym bardziej jak o liście „ostatnio używanych” niż o monitorowaniu procesu
nohillside
3
Podobnie jak patrix, chciałbym dodać, że iOS sam zamyka aplikacje, gdy zabraknie pamięci, więc nawet jeśli wygląda na to, że 50 aplikacji „działa”, jeśli oglądasz film, istnieje duża szansa, że ​​pozostałe 49 zostało zakończone po 2/3 minutach. Przełącznik aplikacji pokazuje tylko ostatnie zrzuty ekranu z tych aplikacji w tym momencie.
Kodowana Małpa
5
@CodedMonkey W większości zgadzam się z twoim komentarzem, jednak jedno wyjaśnienie, które chciałbym zrobić, to to, że pozostałe 49 nie zostanie rozwiązane, zostaną zawieszone. Różnica polega na tym, że gdy aplikacja zostanie zakończona, nie będzie już rezydować w pamięci, a zawieszenie oznacza, że ​​nie jest widoczne na ekranie, ani nie wykonuje kodu. W tym stanie nie używa procesora ani baterii, ale nadal pozostaje w pamięci. Jednak wszystko, co powiedziałem, na twoim przykładzie, przypuszczam, że iOS może faktycznie zakończyć niektóre z pozostałych 49 aplikacji, ale utrzymywać większość z nich w stanie zawieszenia.
Monomeeth
8
Prawdopodobnie musimy zająć się słoniem w pokoju - co powoduje, że mówisz „po prostu utrzymuj wszystkie te aplikacje uruchomione” - a co konkretnie oznacza „zamknij aplikacje” - iOS 11 obsługuje maksymalnie trzy aplikacje, a niektóre aplikacje otrzymują okresowe aktywacje w tle (zgodnie z projektem ), jeśli mówimy o systemie operacyjnym w szerokim zakresie / laika. Jeśli ma to wyemitować debatę na temat tego, czy usunąć zapisane miniatury obrazów aplikacji z interfejsu wielozadaniowości - wyjaśnijmy to w pytaniu.
bmike
3
Naprawdę przerażam moich przyjaciół, mając (teraz) 314 opalania na safari i 57 „otwartych” aplikacji.
Tim

Odpowiedzi:

64

Nie jesteś sam. Ludzie są przyzwyczajeni do swoich przyzwyczajeń do komputerów stacjonarnych i zrozumiałe jest, że przenoszą te nawyki na swoje iPhone'y i iPady.

Pozwól mi jednak spróbować wyjaśnić to za pomocą analogii:

Wyobraź sobie, że jest upalny dzień, a poza ogrodem. Masz ochotę, więc idź do kuchni, weź dużą szklankę, wlej trochę lodu i napełnij ją wodą. Następnie wypijasz połowę, a resztę opróżniasz w zlewie, zanim wrócisz na zewnątrz. Niedługo potem znów poczujesz pragnienie, więc wróć do kuchni, weź tę samą szklankę, wlej trochę lodu i napełnij ją wodą. Znowu pijesz tylko połowę, a resztę opróżniasz w zlewie!

Powyższy obieg pracy po prostu nie ma sensu. Dlaczego nie zabrałbyś szklanki na zewnątrz? I nie tylko marnujesz wodę, opróżniając ją, ale spędzasz więcej czasu i energii na jej odzyskanie.

Podobnie, kiedy wychodzisz z aplikacji, faktycznie zużywasz w tym celu trochę energii (np. Czyścisz ją z pamięci RAM itp.), A następnie ponownie, kiedy musisz ją ponownie uruchomić i ponownie załadować do pamięci RAM.

Tak więc przez większość czasu najlepiej pozostawić otwarte aplikacje. Mimo że są otwarte, tak naprawdę siedzą w trybie zawieszenia, który nie zużywa żadnej mocy baterii. Tak, aplikacja jest nadal ładowana do pamięci RAM i zajmuje miejsce , ale tak naprawdę nic nie robi - po prostu leży w uśpieniu. A ponieważ w tym stanie nie zużywa żadnej mocy baterii, nie ma żadnej korzyści z jej opuszczenia z punktu widzenia oszczędzania baterii - zwłaszcza jeśli jest to aplikacja, o której wiesz, że będziesz używać jej wielokrotnie w ciągu dnia.

Naprawdę nie ma żadnej korzyści, aby wymusić zamknięcie aplikacji, ponieważ sam iOS zrobi to za Ciebie, jeśli / kiedy będzie to konieczne , aby zwolnić pamięć RAM. Jeśli więc masz 50 otwartych aplikacji, a one pozostają otwarte, iOS nie został zmuszony do tego, aby zamknąć jakąkolwiek z nich, aby zwolnić pamięć.

Teraz, jak wszystko, zawsze są wyjątki od reguły (takie jak aplikacje, które muszą wykonywać zadania w tle). Przykładem może być odtwarzanie muzyki podczas wykonywania innych czynności za pomocą telefonu, pobieranie treści w tle lub liczenie kroków, które przechodzisz w ciągu dnia itp. IOS ma jednak wyjątkowo wydajny proces zarządzania aplikacjami / zadaniami w tle, a jeśli zdecydujesz się je zakończyć, w zasadzie mówisz, że nie ufasz systemowi operacyjnemu, że wykona swoje zadanie poprawnie.

Możesz więc zamknąć aplikacje, gdy zajdzie taka potrzeba (np. Ponieważ jest zamrożone itp.), Ale nie rób tego, aby oszczędzać energię baterii. W rzeczywistości, jeśli to zrobisz, osiągniesz coś przeciwnego i zużyjesz więcej energii baterii w ciągu dnia!

Podsumowanie

  • Musisz tylko zamknąć aplikacje, jeśli nie działają poprawnie (np. Aplikacja się zawiesiła, nie wyświetla się poprawnie itp.).
  • Aplikacje wymienione w App Switcherze niekoniecznie działają - w rzeczywistości większość z nich wcale nie działa .
  • Większość aplikacji w App Switcherze będzie w stanie zawieszenia - oznacza to, że nie są: widoczne na ekranie, nie wykonują kodu, nie korzystają z procesora lub karty graficznej ani z baterii. Jednak oni nadal zamieszkuje w pamięci , dopóki są one oczyszczone (jeśli to konieczne) przez system, aby zwolnić pamięć:

    Zawieszony - aplikacja działa w tle, ale nie wykonuje kodu. System automatycznie przenosi aplikacje do tego stanu i nie powiadamia ich przedtem. Po zawieszeniu aplikacja pozostaje w pamięci, ale nie wykonuje żadnego kodu. Gdy wystąpi stan braku pamięci, system może wyczyścić zawieszone aplikacje bez powiadomienia, aby zwolnić miejsce dla aplikacji na pierwszym planie.

    Źródło : patrz Tabela 2-3 w ramach pierwszego linku referencyjnego na końcu tej odpowiedzi.

  • Jedynymi aplikacjami faktycznie działającymi na iPhonie w danym momencie są aktywna aplikacja (tj. Ta widoczna na ekranie) i wszelkie inne działające w tle . ( Uwaga: istnieją pewne tymczasowe wyjątki w przypadku aplikacji, które wciąż potrzebują czasu, aby ukończyć wykonywanie kodu, który już uruchomiły, gdy były aktywne - zwykle jest to tylko sekunda, ale teoretycznie może trwać dłużej niż minutę). .

  • Jeśli chodzi o aplikacje działające w tle, możesz kontrolować, które aplikacje mogą to robić (jeśli są otwarte), przechodząc do Ustawienia> Ogólne> Odświeżanie aplikacji w tle. ( Uwaga: to, że widzisz aplikację wymienioną tutaj, nie oznacza, że ​​będzie działać w tle, ale wyłączenie jej tutaj oznacza, że ​​na pewno nie będzie!)
  • Jeśli iPhone jest zablokowany, aplikacja, która była aktywna (tj. Była widoczna na ekranie) po zablokowaniu urządzenia, jest teraz nieaktywna . Jeśli jednak nie zablokowałeś iPhone'a i nie kończy on wykonywania kodu lub działa w tle (np. Odtwarzając muzykę itp.), Nie używa procesora, karty graficznej ani baterii.

Bibliografia

  1. Więcej informacji na temat różnych stanów, w których może znajdować się aplikacja, można znaleźć w przewodniku Apple App Programming Guide for iOS: Stany wykonania aplikacji .
  2. Aby uzyskać więcej informacji o aplikacjach działających w tle, zapoznaj się z Przewodnikiem programowania aplikacji Apple na iOS: Wykonywanie w tle .
Monomeeth
źródło
9
Jeśli więc masz 50 otwartych aplikacji, a one pozostają otwarte, iOS nie został zmuszony do tego, aby zamknąć jakąkolwiek z nich w celu zwolnienia pamięci. Żeby było jasne, nie ma sposobu, aby stwierdzić, czy aplikacje w aplikacji przełączniki są naprawdę otwarte (rezydentne w pamięci) lub nie.
MJeffryes
24
To, co wyczerpuje baterię, powoduje ponowne uruchomienie aplikacji . Zawieszenie aplikacji jest tanie. Wznowienie zawieszonej aplikacji jest tanie. Ale konieczność całkowitego załadowania aplikacji od zera wymaga wielu zasobów (nawet jeśli niektóre z nich nadal mogą być buforowane): system operacyjny musi załadować aplikację i wszystkie jej zależne ramy, kompletny kod uruchamiania aplikacji musi zostać uruchomiony ponownie itp. ,
DarkDust
5
Zawsze myślałem, że przełącznik wyświetla wszystkie aplikacje otwierane na telefonie do pewnego maksymalnego limitu, w kolejności ich ostatniego użycia, niezależnie od tego, czy były w pamięci, czy nie. Jeśli przewinę wystarczająco daleko wstecz, przejście do aplikacji spowoduje dość długą pauzę, ponieważ (zakładam) aplikacja jest ładowana z dysku. Czy jest jakaś dokumentacja potwierdzająca twój pogląd na jego zachowanie?
MJeffryes
7
To przydatna odpowiedź, ale nie ma mowy, aby iOS zawiesił wszystkie 50 aplikacji, chyba że każda z nich ma naprawdę mikroskopijną pamięć. Przełączam się między dużymi aplikacjami przez cały dzień (Safari, Twitter, Facebook, Reddit, YouTube itp.) I często dostaję „pełne przeładowanie” z powrotem do aplikacji tylko 2 lub 3 karty na liście ostatnio używanych.
BradC
3
@Monomeeth Wiele aplikacji, które zostały skutecznie zakończone - tj. Wymagają pełnego przeładowania, aby wznowić - znajduje się w przełączniku aplikacji. iOS nie kończy się całkowicie, nie sądzę, chyba że nastąpiła awaria - po prostu pozostaje w przełączniku aplikacji, nie rezyduje w pamięci i po prostu mniej lub bardziej ułatwia dostęp.
Joe
22

Podane odpowiedzi są dokładne, chcę tylko wyjaśnić z punktu widzenia programisty iOS.

iOS został zaprojektowany tak, aby zarządzać jak największą liczbą rzeczy, dzięki czemu Ty (i programiści) nie musisz się o to martwić. Rezultatem końcowym jest dość spójne podejście w różnych aplikacjach, w tym w aplikacjach Apple (nawet jeśli czasami Apple samo sobie radzi).

Biorąc to pod uwagę, założeniem jest:

  • iOS wie więcej o pamięci niż my. Wie, ile ma i ile potrzebuje (do pewnego stopnia).
  • iOS ma pełną kontrolę nad pamięcią; ma ostatnie słowo o tym, kto co używa.
  • Jeśli iOS potrzebuje pamięci, znajdzie ją, i zwykle dzieje się to poprzez zabijanie innych procesów, które były bezczynne przez pewien czas (a za kulisami istnieje wiele zasad, nie znamy ich wszystkich i tak naprawdę nie martw się o nich).
  • Wszystko, co robi procesor (CPU), wymaga energii. Absolutnie wszystko. Pamiętaj, że komputery to po prostu bardzo małe pojemniki z elektronami, które przenoszą je w bardzo małych przestrzeniach.
  • Gdy aplikacja zostanie zabita, istnieją pewne uzgodnione protokoły (umowy), które określają, co należy zrobić. iOS wymusza i przenosi te protokoły. Ale praca musi być wykonana, nie jest darmowa i na pewno nie zawsze tania (tak naprawdę zależy od aplikacji).

To powiedziawszy, zakłada się, że większość użytkowników zamyka aplikacje w nadziei na zwiększenie żywotności baterii, mając wrażenie, że zamykając rzeczy, marnuje się mniej energii na utrzymanie tych aplikacji.

Prawda jest taka, że ​​w iOS prawie nigdy tak nie jest. Gdy naciśniesz ekran główny, aplikacja zostanie zawieszona i nie będzie już korzystać z zasobów potrzebnych innej aplikacji. Jeśli nowa aplikacja (lub nawet iOS) potrzebuje tej pamięci, sama się nią zajmie, ale tylko wtedy, gdy będzie potrzebować.

Ciągle zamykasz aplikacje, zmuszasz iOS do zrobienia tego potencjalnie kosztownego zadania polegającego na naprawdę rozładowaniu aplikacji, zapisaniu jej stanu, a co nie, z dodatkowym problemem, że po ponownym otwarciu aplikacji wszystko to musi zostać przywrócone i, w zależności od złożoności aplikacji, wiele rzeczy musi zostać odczytanych z pamięci, do głównej pamięci telefonu i tak dalej. Całą tę dodatkową pracę można było uniknąć, po prostu pozwalając aplikacji pozostać w stanie „zawieszenia”.

Jednak

W niektórych przypadkach (i są rzadkie, ale nie niemożliwie rzadkie), chcesz zabić aplikacje, które źle się zachowują. Przykładami są (ale nie wyłącznie): aplikacje zajmujące się dźwiękiem w tle lub usługi asynchroniczne, takie jak lokalizacja (gdzie aplikacja pyta o lokalizację, a iOS musi iść i zapytać, gdzie to jest, na przykład uruchamiając GPS w razie potrzeby) , streaming wideo itp.

Miałem niezliczoną liczbę aplikacji takich jak Lyft, United Airlines, a nawet Twitter, które kończyły się zepsutym stanem (lub po prostu nie działały poprawnie), albo dlatego, że jesteś w złej sieci (iOS jest naprawdę zły odzyskiwanie z niektórych złych sieci w ostatnich 3-4 wydaniach) lub sieć po prostu nie reaguje prawidłowo.

Z czasem większość z tych problemów ustępuje, a aplikacja zaczyna działać od nowa; ale jeśli naprawdę potrzebujesz, aby aplikacja działała teraz , musisz iść dalej i zapłacić cenę za zabicie jej i ponowne uruchomienie od zera. W ten sposób zużyłeś więcej baterii, ale hej, potrzebowałeś.

A jeśli to było mylące, mogę podać analogię samochodu, ponieważ to właśnie robimy przez cały czas.

Analogia samochodowa

Wiem, że technologia samochodów jest zaawansowana i nie jest to już dobry przykład, ale baw się ze mną tutaj .

Odpalenie silnika samochodu zużywało więcej paliwa niż tylko praca na biegu jałowym. Kiedy samochody miały gaźniki zamiast wtryskiwaczy, było jeszcze gorzej; dlatego wyłączenie silnika po zatrzymaniu się na czerwonym świetle może teoretycznie zużywać więcej paliwa niż tylko praca na biegu jałowym przez minutę. Nowsze samochody mają znacznie bardziej wydajny mechanizm i mogą zatrzymać silnik, ale pozostają w stanie częściowo uruchomionym (nie wchodźmy tutaj zbytnio w samochody).

Zamykanie aplikacji to odpowiednik osoby wyłączającej samochód przy każdym świetle stopu. W przeciwieństwie do pozostawiania go bezczynnego, aż będzie potrzebny, zwykle kilka sekund później.

Analogia nie jest idealna, bo prawdą jest, że bezczynne samochody nadal zużywają paliwo, podczas gdy zawieszone aplikacje nie; jednak w oczach telefonu nie używają niczego związanego z pamięcią / baterią (o ile oczywiście nie mają żadnego przetwarzania w tle jakiegokolwiek rodzaju).

Zasadniczo wyłączasz silnik za każdym razem, gdy zabijasz aplikację, i nie pozwalasz, aby „inteligentny” mechanizm iOS pracujący na biegu jałowym zajął się tym, więc kiedy światło zmieni kolor na zielony, możesz po prostu nacisnąć pedał przyspieszenia i silnik pracuje szybciej niż w 100%. Uruchamianie silnika ze stanu zatrzymania również zużywa więcej mocy niż tylko paliwo, musisz przekręcić rozrusznik, aby silnik można było obrócić, wtryskać paliwo i wytworzyć iskry, więc… to dużo pracy za kulisami. Aplikacje są jak silniki. :)

Martin Marconcini
źródło
1
Haha, podoba mi się ta analogia (i twoja odpowiedź). :)
Monomeeth
Pytanie o komentarz dotyczący: źle zachowujących się aplikacji: „[...] jeśli naprawdę chcesz, aby aplikacja działała teraz, musisz iść dalej i zapłacić cenę za jej zabicie i ponowne uruchomienie od zera. Zużyłeś więcej baterii robiąc to [...] „Czy uważasz, że jest to bardziej marnotrawstwo? Chociaż w innym przypadku nie wychodzę z aplikacji, często zakładam, że rozłączona lub w inny sposób problematyczna aplikacja zużywa wiele zasobów, próbując i nie robiąc tego, co chce. Widzę, że może to być mniej intensywne niż rozpoczęcie od nowa, czy uważasz, że tak jest ogólnie?
brhfl
1
@brhfl Trudno powiedzieć, że każda aplikacja to inny świat. Istnieją wyraźne oznaki, że coś jest nie tak. Jeśli telefon bardzo się nagrzewa w krótkim czasie, gdy próbujesz tylko użyć aplikacji, może to oznaczać, że procesor jest używany, lub jeśli telefon wydaje się powolny (na przykład animacje pomijają klatki). Są to dobre oznaki, że coś zużywa więcej zasobów niż powinno, a w takich przypadkach zabicie podejrzanej aplikacji jest właściwym rozwiązaniem. Ogólnie rzecz biorąc, jeśli aplikacja jest zawieszona (w tle), nawet jeśli nie radzi sobie świetnie, nie będzie miała wyboru, będzie się zachowywać; lub zaryzykować zabicie przez iOS.
Martin Marconcini,
1
  1. Jeśli całkowicie wymusisz zamknięcie aplikacji, to kiedy będziesz musiał ją ponownie otworzyć w późniejszym czasie, narzut związany z uruchomieniem nowej instancji aplikacji wymaga więcej procesora i energii niż tylko przełączanie z jednej aplikacji do drugiej.
  2. Gdy aplikacja po prostu siedzi w pamięci, chyba że jest zbudowana tak, aby działała w tle, zwykle jest wstrzymywana lub zabijana i nie zużywa żadnego cyklu procesora (zwykle). Jeśli jest to dość prosta aplikacja, będzie po prostu siedziała przy użyciu pamięci. W takim przypadku stan aplikacji jest utrwalany gdzie indziej (w pamięci urządzenia w przypadku Androida), dzięki czemu można później przywrócić stan aplikacji. Aby dać ci wyobrażenie, dość długa, niewysłana wiadomość, którą napisałem w aplikacji Viber na moim telefonie, przetrwała zamknięcie telefonu z powodu wyczerpania baterii. Po ponownym uruchomieniu telefonu, a następnie Viber, znalazłem wiadomość czekającą na wysłanie. Alleluja.
  3. W zależności od układu pamięci, to, czy będzie zawierać zera, czy zerowe, nie spowoduje znaczącej różnicy w zużyciu energii. Trzymanie rzeczy w pamięci nie pozwoli znacznie zaoszczędzić baterię.
  4. Kiedy aplikacja jest w bardzo głębokim śnie (chłopaki, proszę to potwierdzić), tylko odniesienie do niej będzie widoczne w przełączniku aplikacji jako migawka z ostatniego ekranu, który był widoczny z niej przed wejściem w dół. Mówię to, ponieważ pewnego dnia postanowiłem zamknąć wszystkie aplikacje na iPadzie i byłem zaskoczony ilością aplikacji, które musiałem zamknąć. To było ponad 60 aplikacji. Nie wszystkie mogą być przechowywane w pamięci iPada. Widziałem tam kilka aplikacji, z których korzystano kilka miesięcy temu.

Jako analogię ... w przypadku samochodu, jeśli musisz zrobić zbyt wiele postojów w ciągu dnia i ciągle zatrzymywać i uruchamiać silnik, nadejdzie czas, kiedy akumulator całkowicie się wyczerpie. Może się to zdarzyć, jeśli czas ładowania podczas jazdy między postojami nie jest wystarczająco długi, aby przywrócić ogromną ilość energii, która jest zasysana z akumulatora przy każdym uruchomieniu silnika. Poza tym nie jest to dobre dla rozrusznika i ogólnego zużycia gazu. Dlatego wielu kierowców ciężarówek dostawczych będzie utrzymywać silnik na biegu jałowym podczas krótkich postojów.

Ta analogia jest IMO podobna do mitu o oszczędzaniu pamięci.

Abdoulaye Siby
źródło
-1

Po prostu rzucam inną opinię w celu dyskusji. Ta koncepcja ma pewien stopień prawdy, ale gdy masz już pewną liczbę otwartych aplikacji, prawdopodobnie zaczniesz odczuwać malejące zyski z zawieszenia aplikacji.

Im więcej aplikacji masz otwartych, tym bardziej baran będzie się przyzwyczajał. Zazwyczaj każda aplikacja w pamięci jest dzielona na pamięć, której aktualnie używa sama aplikacja, pamięć, którą aplikacja chce mieć pod ręką, i pamięć, na którą system operacyjny faktycznie pozwolił, aby aplikacja mogła z niej korzystać, co daje ostateczną ilość pamięci, którą aplikacja jest dozwolone do użycia. Powodem, dla którego aplikacja przechowuje osobną część tej pamięci jako pamięci, której chce użyć, jest to, że aplikacja może wymagać powiększenia stosu, ale niekoniecznie chce to zrobić od razu, ponieważ jest to złe dla śmieciarzy mają duże sterty (duże sterty = dłuższe zbieranie śmieci), więc aplikacja odłoży część pamięci, która nie jest aktualnie używana, ale może być używana przez aplikację wyłącznie w razie potrzeby.

Powiedzmy, że system operacyjny pozwala mojej aplikacji do 700 MB, a zestaw aplikacji odkłada 300 MB pamięci dla siebie, pozostawiając 400 MB dla mojej aplikacji do użycia, jeśli chce, ale wtedy inna aplikacja otwiera się i potrzebuje trochę pamięci; system operacyjny przegląda wszystkie różne aplikacje i decyduje, czy można pobrać trochę pamięci z innej aplikacji i użyć jej w nowej aplikacji, w takim przypadku może zdecydować o pobraniu 150 MB pamięci dozwolonej z moich aplikacji i przekazaniu jej nowej aplikacji , wymagając zamiany pamięci, aby nowa pamięć aplikacji mogła być używana (pomyśl o tym jako o realokacji środków w firmie), im więcej aplikacji masz otwartych, tym więcej pracy musi wykonać system operacyjny, aby faktycznie zdecydować które aplikacje mogą wysysać, aby dać nową pamięć aplikacji.

W tym sensie każda aplikacja, która zostanie otwarta i zawieszona, zwiększa złożoność tego procesu, zwiększając jego obciążenie procesora i ostatecznie wymagając potencjalnie większej mocy baterii do otwierania przyszłych aplikacji niż energii baterii zaoszczędzonej przez nie zamykanie innych aplikacji.

Pamiętajmy, że nie bierze to pod uwagę faktu, że jeśli nie zabijesz aplikacji, mogą działać usługi działające w tle, które pochłoną moc obliczeniową, na przykład powiadomienia ustawione tak, aby powiadamiały Cię o czasomierzu itp. Z drugiej strony niektóre aplikacje nie używają prawdziwej usługi w tle i faktycznie używają powiadomień wypychanych z usług takich jak firebase, które nie wymagają, aby aplikacja była otwarta w dowolnym momencie.

Kolejną rzeczą do rozważenia, im więcej aplikacji ciągle otwierasz, tym bardziej fragmentaryczna będzie początkowo pamięć, dopóki system operacyjny nie przejdzie i nie wyczyści pamięci, aby była bardziej czysta i bardziej wydajna, samo to również zużywa moc przetwarzania, a także im więcej pamięci zajmują aplikacje, tym bardziej intensywny będzie ten proces dla twojego urządzenia.

Wszystko to oznacza, że ​​pozostawienie otwartych aplikacji jest w większości bardziej wydajne, chyba że otwartych jest zbyt wiele aplikacji, jednak nie jestem pewien, ile aplikacji musi być otwartych, aby osiągnąć ten próg, jeśli liczba istnieje.

Źródła:

SGen śmieciarka dla Mono: http://www.mono-project.com/docs/advanced/garbage-collector/sgen/

Omówienie narzędzia do profilowania pamięci dla aplikacji Xamarin na iOS i Androida, które pokazuje sposób zarządzania pamięcią przez aplikację (zestaw roboczy, bajty prywatne, przydzielona pamięć itp.) Https://blog.xamarin.com/say-hello-to -the-Xamarin-profiler /

Trevor Hart
źródło
1
Nie jestem pewien, czy to prawda - czy jesteś programistą iOS? Wierzę, że iOS może, według własnego uznania, zabijać zawieszone aplikacje w razie potrzeby, aby zwolnić pamięć, ale mocno wątpię, że może to częściowo zmniejszyć ślad pamięci zawieszonej aplikacji. Przynajmniej jako użytkownik wydaje się być wszystkim lub niczym.
BradC
2
To wszystko dotyczy „pełnego” systemu operacyjnego wykonującego jednocześnie wiele zadań w pełni działających aplikacji. Nie dotyczy to iOS (z wyjątkiem nowszych konfiguracji podzielonego ekranu). Nie twierdzę, że jestem pewien, że się mylisz, po prostu mówię, że twoje instynkty z innych systemów operacyjnych mogą nie mieć tutaj zastosowania.
BradC
1
I IMHO mylisz przełącznik aplikacji z listą aplikacji „otwartych” / „w pamięci”. Wyraźnie tak nie jest, więc obszar pamięci może równie dobrze być taki sam dla iPhone'a z 5 lub 20 aplikacjami w przełączniku
nohillside
2
Zarządzanie pamięcią frameworka Mono / Xamarin nie jest reprezentatywne dla działania natywnych aplikacji / usług na platformie iOS. iOS i środowisko wykonawcze Objective-C / Swift nie implementują odśmiecania.
Mike Mertsock,
2
@TrevorHart używa automatycznego liczenia referencji developer.apple.com/library/content/documentation/Swift/…
Mateusz Szlosek
-2

Wersja czystego cięcia: Lepiej, ponieważ system operacyjny został zaprojektowany tak, aby był lepszy do tego stopnia, że ​​użytkownik chciałby utrzymać aplikacje w stanie (lub w stanie „zawieszenia”), aby zebrać więcej informacji o twoich działaniach [*] później Jeśli potrzebne.

Dłuższa wersja: aplikacje, które są „zawieszone”, będą miały swój stan zapisany w pamięci, więc gdy chcesz je ponownie wykonać proces ładowania wszystkiego, zajmie to mniej czasu procesorowi i prawie nie będzie używać jednostki pamięci ... Z nie możesz wiedzieć, czy twoje aplikacje robią w tle jakieś inne rzeczy, które w wielu przypadkach siedzą i zbierają dane na twój temat.


[*] Aby rozwinąć gromadzenie danych z Twojej strony ... aplikacje przechowywane w pamięci mogą być „zawieszone” lub aktywne w tle. Ty, jako właściciel urządzenia, nie możesz wiedzieć (jeśli nie posiadasz wiedzy i niektórych innych aplikacji, aby aktywnie skanować użycie procesora), co naprawdę mówi ta aplikacja. Z punktu widzenia bezpieczeństwa radzę zamknąć dowolną aplikację, której nie będziesz używać przez następne 10 minut.

PS Ta praktyka odbywa się na urządzeniach z Androidem, a także ...

Kaoti
źródło
6
-1 Ta odpowiedź byłaby lepsza, gdyby nie miała podtekstu „Twój telefon jest zaprojektowany do szpiegowania ciebie”.
Nzall
4
„Twój telefon jest zaprojektowany do szpiegowania ciebie” tak naprawdę nie dotyczy urządzeń Apple - nie zarabiają na danych osobowych afaik.
wizzwizz4
1
@ wizzwizz4 Mówi kto?
jo '14
1
@yo mówi, że nie jestem w stanie znaleźć dowodów sugerujących, że tak. Załóż dobrą wiarę i tak dalej.
wizzwizz4