On edelleen paljon ihmisiä, jotka eivät tiedä kuinka moniajo toimii iOS:ssä. Aluksi on kuitenkin syytä huomauttaa, että tämä ei ole todellista moniajoa, vaan erittäin älykästä ratkaisua, joka ei kuormita järjestelmää tai käyttäjää.
Usein voi kuulla taikauskoa, että iOS:n taustalla toimivat sovellukset täyttävät käyttömuistin, mikä johtaa järjestelmän hidastumiseen ja akun kestoon, joten käyttäjän tulee sammuttaa ne manuaalisesti. Moniajopalkki ei itse asiassa sisällä luetteloa kaikista käynnissä olevista taustaprosesseista, vaan vain viimeksi käynnistetyistä sovelluksista. Käyttäjän ei siis tarvitse huolehtia taustalla käynnissä olevista prosesseista muutamaa tapausta lukuun ottamatta. Kun painat Koti-painiketta, sovellus yleensä menee lepotilaan tai sulkeutuu, jolloin se ei enää lataa prosessoria tai akkua ja tarvittaessa vapauttaa tarvittavaa muistia.
Tämä ei siis ole täysivaltaista moniajoa, kun sinulla on käynnissä kymmeniä prosesseja, vaan vain yksi sovellus on aina käynnissä etualalla, joka tarvittaessa keskeytetään tai sammutetaan kokonaan. Vain muutama toissijainen prosessi toimii taustalla. Siksi iOS:ssä törmäät harvoin sovellusten kaatumiseen, esimerkiksi Android on täynnä käynnissä olevia sovelluksia, joista käyttäjän on huolehdittava. Toisaalta tämä tekee laitteen kanssa työskentelystä epämiellyttävää, toisaalta se aiheuttaa esimerkiksi hidasta käynnistystä ja siirtymiä sovellusten välillä.
Sovelluksen suoritusaikatyyppi
iOS-laitteesi sovellus on jossakin seuraavista viidestä tilasta:
- Juoksu: sovellus käynnistyy ja toimii etualalla
- Tausta: se on edelleen käynnissä, mutta käynnissä taustalla (voimme käyttää muita sovelluksia)
- Keskeytetty: Käyttää edelleen RAM-muistia, mutta ei käynnissä
- Epäaktiivinen: sovellus on käynnissä, mutta epäsuorat komennot (esimerkiksi kun lukitset laitteen sovelluksen ollessa käynnissä)
- Ei käynnissä: Sovellus on päättynyt tai ei ole alkanut
Hämmennys tulee, kun sovellus menee taustalle, jotta se ei häiritse. Kun painat Koti-painiketta tai suljet sovelluksen (iPadin) eleellä, sovellus siirtyy taustalle. Useimmat sovellukset keskeytyvät sekunneissa (Ne tallennetaan iDevicen RAM-muistiin, jotta ne voidaan käynnistää nopeasti, ne eivät kuormita prosessoria niin paljon ja säästävät näin akkua) Saatat ajatella, että jos sovellus jatkaa muistin käyttöä, sinulla on poistaaksesi sen manuaalisesti vapauttaaksesi sen. Mutta sinun ei tarvitse tehdä sitä, koska iOS tekee sen puolestasi. Jos sinulla on taustalla keskeytetty vaativa sovellus, kuten paljon RAM-muistia käyttävä peli, iOS poistaa sen tarvittaessa automaattisesti muistista ja voit käynnistää sen uudelleen napauttamalla sovelluskuvaketta.
Mikään näistä tiloista ei näy moniajopalkissa, paneeli näyttää vain luettelon äskettäin käynnistetyistä sovelluksista riippumatta siitä, onko sovellus pysäytetty, keskeytetty vai käynnissä taustalla. Saatat myös huomata, että parhaillaan käynnissä oleva sovellus ei näy Multitasking-paneelissa
Taustatehtävät
Normaalisti, kun painat Koti-painiketta, sovellus toimii taustalla, ja jos et käytä sitä, se pysähtyy automaattisesti viiden sekunnin sisällä. Joten jos esimerkiksi lataat podcastia, järjestelmä arvioi sen käynnissä olevaksi sovellukseksi ja viivästyttää lopettamista kymmenellä minuutilla. Viimeistään kymmenen minuutin kuluttua prosessi vapautetaan muistista. Lyhyesti sanottuna sinun ei tarvitse huolehtia latauksen keskeyttämisestä painamalla Koti-painiketta, jos lataus ei kestä yli 10 minuuttia.
Taustalla jatkuva käynnissä
Jos järjestelmä ei ole aktiivinen, järjestelmä lopettaa sovelluksen viiden sekunnin kuluessa ja latausten kohdalla lopettaminen viivästyy kymmenen minuuttia. On kuitenkin olemassa pieni määrä sovelluksia, jotka vaativat käynnissä olevan taustalla. Tässä on joitain esimerkkejä sovelluksista, jotka voivat toimia taustalla loputtomasti iOS 5:ssä:
- Sovellukset, jotka toistavat ääntä ja jotka on keskeytettävä hetkeksi (musiikin keskeyttäminen puhelun aikana jne.),
- Sovellukset, jotka seuraavat sijaintiasi (navigointiohjelmisto),
- VoIP-puheluita vastaanottavat sovellukset, esimerkiksi jos käytät Skypeä, voit vastaanottaa puhelun, vaikka sovellus olisi taustalla,
- Automaattiset lataukset (esim. Lehtikioski).
Kaikki sovellukset tulee sulkea, jos ne eivät enää suorita tehtäviä (kuten taustalatauksia). On kuitenkin poikkeuksia, jotka toimivat taustalla jatkuvasti, kuten alkuperäinen Mail-sovellus. Jos ne toimivat taustalla, ne vievät muistia, suorittimen käyttöä tai lyhentävät akun käyttöikää
Sovellukset, jotka saavat toimia taustalla rajoituksetta, voivat tehdä mitä tahansa, mitä he tekevät ollessaan käynnissä, musiikin toistamisesta uusien Podcast-jaksojen lataamiseen.
Kuten aiemmin mainitsin, käyttäjän ei tarvitse koskaan sulkea taustalla käynnissä olevia sovelluksia. Ainoa poikkeus tähän on, kun taustalla toimiva sovellus kaatuu tai ei herää lepotilasta kunnolla. Käyttäjä voi sitten sulkea sovellukset manuaalisesti moniajopalkissa, mutta näin tapahtuu harvoin.
Yleensä sinun ei siis tarvitse hallita taustaprosesseja, koska järjestelmä hoitaa ne itse. Siksi iOS on niin tuore ja nopea järjestelmä.
Kehittäjän näkökulmasta
Sovellus voi reagoida yhteensä kuuden eri tilan kanssa osana moniajoa:
1. applicationWillResignActive
Käännöksessä tämä tila tarkoittaa, että sovellus eroaa aktiivisesta sovelluksesta (eli etualalla olevasta sovelluksesta) tulevaisuudessa (muutaman millisekunnin ajan). Näin tapahtuu esimerkiksi puhelun vastaanottaessa sovellusta käytettäessä, mutta samalla tämä menetelmä aiheuttaa myös tämän tilan ennen kuin sovellus menee taustalle, joten sinun on otettava nämä muutokset huomioon. Tämä menetelmä sopii myös esimerkiksi niin, että se keskeyttää kaikki tekemänsä toiminnot saapuvan puhelun tullessa ja odottaa puhelun loppuun.
2. applicationDidEnterBackground
Tila osoittaa, että sovellus on mennyt taustalle. Kehittäjien tulisi käyttää tätä menetelmää keskeyttääkseen kaikki prosessit, joiden ei välttämättä tarvitse toimia taustalla, ja tyhjentää muistin käyttämättömästä tiedosta ja muista prosesseista, kuten vanhenevat ajastimet, tyhjentää ladatut kuvat muistista, joita ei välttämättä tarvita, tai sulkea yhteyksiä palvelimiin, ellei sovelluksen ole tärkeää suorittaa yhteyksiä taustalla. Kun menetelmää vedetään sovelluksessa, sitä tulisi lähinnä käyttää sovelluksen täydelliseen keskeyttämiseen, jos jonkin sen osan ei tarvitse ajaa taustalla.
3. applicationWillEnterForeground
Tämä tila on päinvastainen kuin ensimmäinen tila, jossa sovellus luopuu aktiiviseen tilaan. Tila tarkoittaa yksinkertaisesti sitä, että nukkuva sovellus palaa taustalta ja näkyy etualalla muutaman millisekunnin sisällä. kehittäjien tulee käyttää tätä menetelmää jatkaakseen prosesseja, jotka olivat passiivisia sovelluksen ollessa taustalla. Yhteydet palvelimiin tulee muodostaa uudelleen, ajastimet nollata, kuvat ja tiedot ladata muistiin ja muut tarvittavat prosessit voivat jatkua juuri ennen kuin käyttäjä näkee ladatun sovelluksen uudelleen.
4. ApplicationDidBecomeActive
Tila ilmaisee, että sovellus on juuri aktivoitunut sen jälkeen, kun se on palautettu etualalle. Tämä on menetelmä, jolla voidaan tehdä lisäsäätöjä käyttöliittymään tai palauttaa käyttöliittymä alkuperäiseen tilaan jne. Tämä tapahtuu itse asiassa sillä hetkellä, kun käyttäjä jo näkee sovelluksen näytöllä, joten on välttämätöntä määritä varoen, mitä tapahtuu tässä ja edellisessä menetelmässä. Niitä kutsutaan peräkkäin muutaman millisekunnin erolla.
5. ApplicationWillTerminate
Tämä tila tapahtuu muutama millisekunti ennen sovelluksen sulkemista, toisin sanoen ennen kuin sovellus todella päättyy. Joko manuaalisesti moniajosta tai sammutettaessa laite. Menetelmää tulisi käyttää käsiteltyjen tietojen tallentamiseen, kaikkien toimintojen lopettamiseen ja tarpeettomien tietojen poistamiseen.
6. applicationDidReceiveMemoryWarning
Se on viimeinen tila, josta puhutaan eniten. Se vastaa tarvittaessa sovelluksen poistamisesta iOS-muistista, jos se käyttää järjestelmäresursseja tarpeettomasti. En tiedä tarkasti, mitä iOS tekee taustasovelluksilla, mutta jos se tarvitsee sovelluksen vapauttamaan resursseja muihin prosesseihin, se kehottaa vapauttamaan kaikki resurssit, joita sillä on muistivaroituksella. Joten tätä menetelmää kutsutaan sovelluksessa. Kehittäjien tulee toteuttaa se niin, että sovellus luopuu varaamasta muistista, tallentaa kaiken keskeneräisen, tyhjentää tarpeettomat tiedot muistista ja muuten vapauttaa muistia riittävästi. On totta, että monet kehittäjät, edes aloittelijat, eivät ajattele tai ymmärrä tällaisia asioita, ja silloin voi tapahtua, että heidän sovelluksensa uhkaa akun käyttöikää ja/tai kuluttaa tarpeettomasti järjestelmäresursseja, jopa taustalla.
tuomio
Nämä kuusi tilaa ja niihin liittyvät menetelmät ovat kaiken iOS:n "monitehtävän" taustalla. se on loistava järjestelmä, kunhan kehittäjät eivät jätä huomiotta tosiasiaa, että on oltava vastuussa siitä, mitä sovellus heittää käyttäjiensä laitteisiin, jos ne on minimoitu tai he saavat varoituksia järjestelmältä ja niin edelleen.
Lähde: Macworld.com
Tekijät: Jakub Požárek, Martin Doubek (ArnieX)
Onko sinulla myös ratkaistava ongelma? Tarvitsetko neuvoja tai kenties löytää oikean sovelluksen? Älä epäröi ottaa meihin yhteyttä osiossa olevan lomakkeen kautta Neuvonta, seuraavan kerran vastaamme kysymykseesi.
Hei, todella hieno artikkeli, mutta ihmettelen, onko sinulla teknistä tukea siihen. Koska olen ratkaissut akun monta kertaa illalla ennen nukkumaanmenoa ja kävi niin, että wifin ja mobiilidatan ollessa pois päältä, kesti enemmän kuin toisessa tapauksessa wifi pois päältä ja vain 3G.
Valitettavasti kokemus on, että iOS:ssä sovellukset täytyy sammuttaa manuaalisesti, eikä järjestelmä enää toimi niin hyvin kuin ennen.
Vaihdoin iPhoneni Windows Phoneen (Samsung Omnia W hintaan 6200,-) ja järjestelmän nopeus on aivan eri tasolla.
Pelkään, että kun Windows 8 Metro -tabletit ilmestyvät, vaihdan myös iPadin...
@007 – kyllä, jos vertaat vanhoja iPhone3G:itä uusiin WP-malleihin, niin kyllä (kuka olisi odottanut sitä?) WP on melkoisen nopeampi. Muuten Karlulkan juorut eivät sovi sinulle ja oli sopivaa verrata nykyistä HW:tä. Ostin myös WP7:n ja lopulta päädyin 4s:ään, joka edustaa täysin erilaista käytettävyyttä kuin WP7. Kulje siis miellyttävästi ja selaa laattoja loputtomasti.
Olen Pajan kanssa täysin samaa mieltä
Osallistuisin taas toisen tynnyrin - Samsung Galaxy S:n ja iPhone 4:n - romuista - sanoisinko iän suhteen vertailukelpoisia? Apple on iOS 4:n aikaan ja käytettävyyden ja nopeuden suhteen muualla kuin Androidissa ratkaissut sovellusten kanssa työskentelyn konseptin erittäin hyvin, mutta sama ei päde enää Androidin kanssa. Lopulta päädyin kuitenkin 4S:ään, eikä minulla ole valittamista, koska "se vain toimii" .. ja se toimii erittäin nopeasti!
Teoria on kaunis... Mutta käytännössä suljen silti sovelluksen baarissa ;)
Kiitos, erittäin mielenkiintoinen, käytännöllinen, mielenkiintoinen, siitä ei puutu swingiä ja syvyyttä. Korostaa merkittävästi nykyajan nuorten pakkomiellettä tätä kiellettyä merkkiä kohtaan! Mutta kiitos hänestä, samoin kuin tästä artikkelista.
Artikkeli on täysin väärä.
Sovellus ei sulkeudu, kun aloituspainiketta painetaan, kuten virheellisesti sanotaan, vaan pysähtyy. Eli älä todellakaan poista muistista äläkä lopeta. Keskeytä ajo, iOS antaa tälle sovellukselle 0 % CPU-aikaa. Se ei todellakaan "vaihda" missään iDevice-muistissa, kuten artikkelissa todetaan. Se johtuu todella siitä, että on mahdollista käyttää sovelluksen vaihtoa.
Sovellus poistetaan muistista, kun puhelimessa on vähän muistia muiden korkeamman prioriteetin sovellusten suorittamiseen (yleensä toinen sovellus on käynnissä etualalla).
Ensimmäisessä tapauksessa olet oikeassa, se oli käännösvirhe. Mitä tulee vaihtoon, emme puhu siitä tässä, puhumme käyttömuistista, emme iOS-laitteen tallennustilasta.
sovelluksen kuva tallennetaan muistiin rajoitetun ajan, kunnes se kutsutaan uudelleen komennolla (katso 13,7 Gt 16 Gt:sta: 2,3 Gt on varattu järjestelmälle ja keskeytetyille sovelluksille)
Näin ollen on tarpeen erottaa sovellukset, kuten Navigointi, Skype ja vastaavat, nämä sovellukset pysyvät aktiivisina myös taustalla tai tietty toiminto ei pääty ja jatkaa esimerkiksi tietojen lähettämistä sijainnistaan tai sijaintitiedoistaan. Tai kuten Vokul pord-tilassa kuuntele ja multitasking kuuntelee edelleen taustalla.
Nämä sovellukset kuluttavat akkua ja ne on suljettava manuaalisesti eikä odoteta iOS:ää. muiden kanssa se ei ole välttämätöntä, vain siinä tapauksessa, että sovellus kaatuu.
En voi yhtyä artikkeliin. Min. 1. sukupolven iPadissa (iOS 5.0.1) on selvää, onko minulla monia "avoimia" sovelluksia moniajopalkissa vai vain muutama. iOS yrittää puhdistaa muistia, mutta se ei selvästikään riitä - RAM-muistin pieni koko on luultavasti sen suurin heikkous.
joten paljon riippuu järjestelmästä ja käytetystä laitteistosta, on melko loogista, että se on huonompi iPad 1:ssä, jossa on iOS 5.0.1, kuin jos se olisi toisen sukupolven iPadissa
Anteeksi kaveri, tämä on kuvaus IDEALISTA tavasta, jolla sen pitäisi toimia. Valitettavasti todellisuus on täysin erilainen ja tietäisit sen, jos käyttäisit Applen tuotteita, ainakin yhtä paljon kuin minä (eli silloin tällöin).
"Voit usein kuulla taikauskoa, että iOS:n taustalla toimivat sovellukset täyttävät käyttömuistin."
Se ei ole taikausko, se on vain tosiasia. Loppujen lopuksi väität sen itse artikkelissa.
"Kuten aiemmin mainitsin, käyttäjän ei tarvitse koskaan sulkea taustalla käynnissä olevia sovelluksia."
HÖLYNPÖLY. Se on pelkkää paskaa, omenapropagandaa, älä suutu minulle.
"Mutta sinun ei tarvitse tehdä sitä, koska iOS tekee sen puolestasi. Jos sinulla on taustalla keskeytetty vaativa sovellus, kuten peli, joka käyttää paljon RAM-muistia, iOS poistaa sen tarvittaessa automaattisesti muistista ja voit käynnistää sen uudelleen napauttamalla sovelluskuvaketta.
Ei totta. Tilanne on hieman erilainen. Tyypillinen esimerkki – minulla on vaativat sovellukset käynnissä taustalla, tarvitsen pelejä. Avaan selaimen, avaan pari välilehteä -> tarvitsen lisää muistia. Mitä tapahtuu? Pidän vaativia sovelluksia taustalla, päinvastoin, SEELIN ITSE PUTOA. Jos suljen vaativat sovellukset manuaalisesti, selain toimii pitkään ilman ongelmia.
Tämä on käytäntöä, ei teoriaa. Ja olen yllättynyt, että Apple-tuotteen pitkäaikaisena käyttäjänä et vieläkään tiedä tätä.
Kiitos, tämä on hyvin kuvattu ja hyvin selitetty. Olet auttanut minua aika paljon ;-) ♥
Aluksi, en ole iOS:n puolesta enkä vastaan, aivan kuten Androidin kanssa, mutta tässä on muutama outo seikka, jos kuten täällä kirjoitetaan: "iOS:ssa kohtaat harvoin sovelluskaatumisen" niin Android-sovellukset kaatuvat n. kerran vuodessa: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Kyllä, mutta tapaukset, joissa sinun on suljettava sovellus manuaalisesti, ovat todella vähäisiä, käytin sitä noin kerran? ;-) ja linkin antaminen Mobilemanian vertailutestiin on aika turhaa, kun haluan lukea Googlen maksamasta mainonnasta, niin käyn kurkkaamassa sieltä ;-) jokainen saa minkä tahansa android-puhelimen käteensä ja se ei toimi siististi, toisin sanoen Galaxy Nexusta lukuun ottamatta, jonka järjestelmä on enemmän tai vähemmän räätälöity. Kaiken kaikkiaan android on katastrofi
@Mek – Olen käyttänyt Applen tuotteita päivittäin useiden vuosien ajan, eikä näin ole koskaan tapahtunut minulle, joten teoriasi ei jotenkin toimi.
O T:
@redakce – On nähtävissä, että sivustoa työstetään jatkuvasti tai sillä tapahtuu jotain, mutta minulla on sellainen tunne, että ei kestä viikkoa ennen kuin kaikki toimii niin kuin pitää. Ja en todellakaan tule tänne enää, koska uusi ulkoasu ei sovi minulle. Ainakin minä käytin mobiiliversiota iPhonessa, mutta nyt se ei toimi ollenkaan - miksi niin? He eivät tällä hetkellä vastaa kommenteissa oleviin viesteihin.
@SteveJSF Valitettavasti asiat eivät aina mene niin kuin haluaisimme. Mitä tulee vastauksiin, uusi SEO-laajennus rikkoi ne, ja sitä korjataan parhaillaan.
Myös WP-Touch lopetti jostain syystä palvelumme, joten päätimme keksiä tätä laajennusta paremman ratkaisun. Joten voit odottaa seuraavia uutisia pian :-)
Kiva artikkeli. Käytännön osalta haluaisin sanoa, että olen useista asioista samaa mieltä ja useimmiten se toimii niin kuin sanottu, mutta valitettavasti edelleen on huonosti kirjoitettuja hakemuksia, jotka eivät toimi oikein, ja sitten on tapauksia, kuten jotkut lukijat ovat panneet merkille. Mielestäni Skype on erittäin hyvä esimerkki, tiedän käytännössä, että se toimii edelleen taustalla (ja se on hyvä ja niin sen pitäisi olla), mutta ongelma on, että tämä sovellus kuluttaa laitteen akkua paljon ja En näe sitä enää kunnolla. Toisaalta sovellukset, kuten Facebook, Badoo jne. ne myös pyörivät edelleen taustalla, mutta niiden kulutus on lähes huomaamaton (en ainakaan minä huomaa). Joten mielestäni virhe on yksittäisissä sovelluksissa. Jos tietäisit mitkä, riittäisi sammuttaa vain ne manuaalisesti!
Joten käytäntö on, että Facebook toimii tarpeen mukaan ja Skype vain tarvittaessa.
No, toisaalta, jos minun täytyy säästää akkua ja tiedän, että minun on pidettävä iPhone "hengissä" mahdollisimman pitkään, niin kytken myös kaiken tarpeettoman pois päältä moniajossa, mutta enimmäkseen sillä ei ole suurta vaikutusta, mutta tarvittaessa rajoitan 3G:tä, kaikkea mobiilia nettiä, WiFiä, paikannuspalveluita, lentotilaa, valaistuksen voimakkuutta jne. Osana rutiinia kytken myös edellä mainitut sovellukset pois päältä multitaskingissa.
Joten henkilökohtaisesti olen sitä mieltä, että artikkeli on totta, valitettavasti jotkut ohjelmoijat kumoavat nämä asiat sovelluksillaan, koska heidän sovelluksensa ovat vääriä ja mielestäni tähän on vain kaksi ratkaisua 1. Jos on mahdollista olla käyttämättä sovellusta ja löytää vaihtoehto, jos mahdollista, tai 2. Jos se ei ole mahdollista, katso esim. Skype, kirjoita se annetulle ohjelmoijalle raporttiin ja toivo, että he tekevät asialle jotain.
Voi olla turhaa poistaa sovelluksia käytöstä manuaalisesti, mutta teen sen silti. Yritin myös olla sammuttamatta sovellusjärjestelmää, antaa niiden käydä (tai jättää ne nukkumaan taustalle) ja akun kesto oli paljon pienempi, minun piti myös käynnistää iPad 2 uudelleen noin kolmen viikon kuluttua, se reagoi hitaasti. Joten sammutan sovellukset manuaalisesti, akku kestää kauemmin, käynnistin äskettäin uudelleen joulupäivänä ja se toimii hyvin.
Muuten, teen saman asian Mac OS X:ssä, suljen vain sovelluksen, jota en tarvitse (CMD+Q), se on parempi kuin se, että se nukkuu taustalla ja syö tarpeettomasti RAM-muistia (mitä OS X voi t toimi erittäin hyvin). Minulla on vähän RAM-muistia, vain 8 Gt, mutta Windows 7:ssä, jossa on 8 Gt, järjestelmä ei reagoinut hitaasti tai vaihtanut, OS X:ssä tämä on melko yleinen ilmiö (en koskaan sammuttanut tietokonetta, teen sen myös Macilla, joten kuukausi ja enemmän käyttöaika ei ole poikkeus, ongelmana on, että minun on joskus käynnistettävä Mac uudelleen varotoimenpiteenä vapauttaakseni RAM-muistia ja "nopeuttaakseni", Windows 7 ei tarvitse tätä).
Olen enemmän kiinnostunut siitä, kuinka sovellus todella räjäytetään. Minulle kävi niin, että sovellus (erityisesti Geokätköilyssä) joutui tilaan, jossa se latasi jotain pääpalvelimelta ja juuttui siihen tilaan. Kotipainike toimi, uudelleenkäynnistyksen jälkeen palasi jäädytettyyn tilaan (mihin jäin). Manuaalinen poistuminen (multitasting-valikkoon, pidä kuvaketta ja miinuspainiketta sulkeaksesi) = sovellus katosi, uudelleenkäynnistyksen jälkeen se avautui alkuperäisessä tilassaan, jossa se jumiutui. Joten suljin kaiken, sammutin puhelimen, käynnistin sen, kaksoisnapsautin HOME-painiketta ja katso ja katso – sovellukset olivat kaikki siellä kuin ennen sulkemista juuri ennen sammuttamista. Uudelleenkäynnistyskään ei auttanut - pidä kotona ja ylhäällä kunnes kuumenee. Ainoa asia, joka auttoi, oli sovelluksen poistaminen puhelimesta, uudelleenkäynnistys ja uudelleenasentaminen puhelimeen. Jotenkin en ottanut sitä vastaan.
Tämä Multitasking-hallinta toimii ja on kehittäjien tehtävä selviytyä näistä tilanteista. Niille, jotka ovat kiinnostuneita yksityiskohtaisemmasta ja ammattimaisemmasta kuvauksesta koko tilanteesta, kirjoitan tänne kuinka asia on.
Sovellus voi vastata yhteensä 6 tilaan ja nämä tilat ovat:
ApplicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
ApplicationDidBecomeActive
ApplicationWillTerminate
applicationDidReceiveMemoryWarning
Yritän nyt kuvata näitä tiloja yksityiskohtaisemmin.
applicationWillResignActive – tämä tila tarkoittaa, että tulevaisuudessa (muutaman millisekunnin ajan) sovellus eroaa aktiivisena sovelluksena (eli etualalla olevana sovelluksena) tämä tapahtuu esimerkiksi puhelun vastaanottaessa sovellusta käytettäessä, mutta samalla tämä menetelmä, joten tämä tila laukeaa jo ennen kuin sovellus siirtyy taustalle, joten sinun on otettava nämä muutokset huomioon. Tämä menetelmä sopii myös esimerkiksi niin, että se keskeyttää kaikki tekemänsä toiminnot saapuvan puhelun tullessa ja odottaa puhelun loppuun.
applicationDidEnterBackground - tämä tila osoittaa, että sovellus on siirtynyt taustalle, kehittäjien tulisi käyttää tätä menetelmää keskeyttämään kaikki prosessit, joiden ei välttämättä tarvitse toimia taustalla ja puhdistaa muisti käyttämättömistä tiedoista ja muista prosesseista, kuten vanhenemisajastimet, tyhjentää muistiin ladatut kuvat, joita ei välttämättä tarvita, tai katkaisevat yhteyden palvelimiin, jos sovelluksen ei ole tärkeää muodostaa yhteyttä taustalla. Pohjimmiltaan tätä sovelluksessa kutsuttua menetelmää tulisi käyttää sovelluksen täydelliseen keskeyttämiseen, jos osan siitä ei vaadita toimimaan taustalla.
applicationWillEnterForeground – tämä tila on päinvastainen ensimmäiselle tilalle, jolloin sovellus eroaa aktiiviseen tilaan. Tämä sovelluksen tila tarkoittaa yksinkertaisesti sitä, että muutaman seuraavan millisekunnin aikana nukkuva sovellus jatkaa taustalta ja näkyy etualalla (sovellus tulee etualalle), kehittäjien tulisi käyttää tätä menetelmää jatkaakseen prosesseja, jotka olivat epäaktiivisia sovelluksen ollessa käynnissä. taustalla yhteydet palvelimiin tulee muodostaa uudelleen, ajastimet nollata, kuvat ja tiedot ladata muistiin ja muut tarvittavat prosessit voivat jatkua juuri ennen kuin käyttäjä näkee ladatun sovelluksen uudelleen.
applicationDidBecomeActive – tämä tila ilmaisee, että sovellus on juuri aktivoitunut sen jälkeen, kun se on palautettu etualalle. Tämä on menetelmä, jolla voidaan tehdä lisäsäätöjä käyttöliittymään tai palauttaa käyttöliittymä alkuperäiseen tilaan jne. Tämä menetelmä todella tapahtuu kun käyttäjä jo näkee näytöllä, joten taseesta on selvitettävä, mitä tässä ja edellisessä menetelmässä tapahtuu. Niitä kutsutaan peräkkäin muutaman millisekunnin erolla.
applicationWillTerminate - tämä tila tapahtuu muutama millisekunti ennen sovelluksen lopettamista, eli ennen kuin sovellus todella päättyy. Joko manuaalisesti moniajosta tai sammutettaessa laite. Tätä menetelmää tulisi käyttää käsiteltyjen tietojen tallentamiseen ja kaikkien toimintojen lopettamiseen ja tarpeettomien tietojen poistamiseen.
applicationDidReceiveMemoryWarning - ja tästä on täällä paljon keskusteltu ehto, jos tarpeen, iOS poistaa sovelluksen muistista, jos se käyttää järjestelmäresursseja tarpeettomasti. En tiedä tarkalleen, mitä iOS tekee taustasovelluksilla, mutta jos se tarvitsee sovelluksen vapauttamaan resursseja muihin prosesseihin, se kehottaa sitä muistivaroituksella vapauttamaan hallussaan olevat resurssit. Joten tätä menetelmää kutsutaan sovelluksessa, ja kehittäjien tulee toteuttaa se niin, että sovellus luopuu muististaan, tallentaa käsitellyt ja poistaa tarpeettomat tiedot muistista ja muuten riittävästi vapauttaa muistia. On totta, että monet kehittäjät, esimerkiksi aloittelijat, eivät ajattele tällaisia asioita tai eivät ymmärrä niitä, ja silloin voi käydä niin, että heidän sovelluksensa vaarantaa akun käyttöiän ja/tai kuluttaa tarpeettomasti järjestelmäresursseja jopa taustalla. En tiedä miten iOS käyttäytyy, jos sovellus ei tee mitään muistivaroituksen saatuaan ja kuluttaa edelleen järjestelmäresursseja kuten ennenkin.
Nämä muutamat tilat ja niihin liittyvät menetelmät ovat koko iOS:n "monitehtävän" takana... se on loistava järjestelmä, jos kehittäjät eivät jätä huomiotta tarvetta olla vastuussa siitä, mitä sovellukset aiheuttavat käyttäjien laitteille, jos ne minimoidaan tai saada varoituksia järjestelmästä ja paljon muuta…
Toivon, että tämä lyhyt kuvaus auttaa sinua ymmärtämään, kuinka sovellus vaikuttaa siihen, että kaikki toimii sujuvasti. Joten on melkein mahdollista sanoa, että kyseessä on käyttäjän virheellinen käyttövirhe, joka voidaan ymmärtää siten, että jos käytät suuria määriä enimmäkseen ilmaisia amatöörikehittäjien sovelluksia, iOS-laitteesi toimii huonommin kuin jos käytät suurta useita ilmaisia ja maksullisia sovelluksia kokeneilta tai ammattimaisilta kehittäjiltä. Tämä ei tarkoita, etteikö molemmissa piireissä olisi poikkeuksia. Esimerkiksi foursquare käyttäytyy varsin oudosti ja vaativasti, ja samalla voisi olettaa, että he ovat erittäin taitavia kehittäjiä, jotka antavat paljon aikaa muistin ja akun hallintaan, mutta asia on päinvastoin. Suurin ongelma 4SQ:ssa on kommunikointi palvelimien kanssa, joka usein jumiutuu ja on ylikuormitettu. Tämä on vain esimerkki siitä, että tunnetuissakin sovelluksissa on ongelmia, mikä ei muuta sitä tosiasiaa, että 4SQ on loistava palvelu.
Hauskaa Omenat!! :)
Lisäsimme tiedot artikkeliin kirjoittajan ystävällisellä luvalla ;-)
Anteeksi, ENTER oli kaikkialla kappaleiden välissä, he voisivat tehdä asialle jotain täällä, jotta kommenteissa olisi ainakin vähän RICH TEXT FORMATINGia.
ArnieX: kiitos kommentista!!
Tuo Faramir: Kerron vain ongelmastasi, en tiedä auttaako se sinun tapauksessasi, mutta tiedän omasta kokemuksestani, että jos suljet sovelluksen (moniajossa), kestää muutaman sekunnin ennen kuin se sulkeutuu, joten jos sammutat sen, suosittelen odottamaan muutaman sekunnin (I Odotan n. 10 sekuntia varmuuden vuoksi), kunnes se on varmasti valmis ja vasta sitten käynnistän sen uudelleen.
Tervetuloa ;) Autan mielelläni, jos minulla on mahdollisuus osallistua.
Miten Meebin pitäisi olla, kun kirjaudun sisään ICQ- tai FB-chatiin sen kautta, se kirjautuu automaattisesti ulos 10 minuutin kuluttua ja siirryn offline-tilaan vai toimiiko se edelleen? kiitos selvennyksestä :P
Kymmenen minuutin kuluttua sovelluksen Internet-yhteys yksinkertaisesti katkeaa. Olet kuitenkin edelleen online-tilassa Meeba-palvelimella ja saat push-ilmoituksen, jos joku kirjoittaa sinulle. Sovelluksen uudelleen avaamisen jälkeen yhteys muodostuu hetkessä ja voit jatkaa chattailua tyytyväisenä.
Joten jos ymmärsin linkittämäsi artikkelin oikein, tilastot viittaavat vain sovellusten kaatumiseen niiden käynnistyessä, mikä on melko pieni prosenttiosuus tapauksista, joissa kaatuminen voi tapahtua. Siksi tästä "tutkimuksesta" on mahdotonta päätellä, että iOS on mielestäni vähemmän vakaa. Lisäksi Forbesista poimitun artikkelin kääntäjä unohti mainita, että sovellusten kaatumisista tietoa tarjoavaa yritystä tukee muun muassa Google ("Crittercism, jonka taustalla on Google Ventures,...").