Ennen API 11:ttä käytimme aktiviteetteja, jotka näyttivät jokaisen uuden sivun näytöllä. Nyt Fragmenttien ja API 28:n navigointityökalujen avulla on täysin mahdollista tehdä hyvin monimutkainen sovellus vain yhdellä aktiviteetilla. Aktiviteetit ovat kuitenkin edelleen loistavia sovelluksen jakamiseen vaiheisiin ja prosesseihin. Ehkä haluat jakaa kaiken markkinoinnin yhteen aktiviteettiin ja pitää varsinaisen sovelluksen omana aktiviteettinaan. Ehkä haluat, että yksi osio on varattu jollekin ominaisuudelle, kuten chat-palvelulle. Aktiviteettien käynnistystapojen tunteminen auttaa sinua jakamaan nämä prosessit paremmin käyttäjien kannalta järkevillä tavoilla. Töissä istuessani en koskaan muistanut käynnistystapoja ulkoa, joten ajattelin kirjoittaa siitä blogin, animoida muutamia gif-kuvia havainnollistamaan käsitteitä ja jakaa sen sitten kaikkien kanssa.
Ennen kuin puhumme käynnistystiloista, ymmärrämme ensin tehtävän roolin. Tehtävä sisältää kokoelman aktiviteetteja, jotka on järjestetty pinoihin, joita kutsutaan backstackiksi. Tehtävän ensimmäinen käynnistettävä aktiviteetti on root-aktiviteetti. Painamalla takaisin-painiketta root-aktiviteetilla ei ainoastaan lopeteta aktiviteettia, vaan myös tehtävä ja mahdollisesti koko sovellus.
Sukelletaan nyt muutamiin käynnistystapoihin!
Asettakaamme, että sinulla on tehtävä, jonka root-aktiviteetti on nimeltään aktiviteetti A, ja käynnistät sitten uuden aktiviteetin nimeltä B, jolloin B työnnetään pinon yläosaan. Sanotaan nyt, että käynnistät toisen Activity B:n juuri luomastamme B:stä, sinulla on nyt kaksi Activity B:n instanssia pinossa päällekkäin. Jos käyttäjä painaa takaisin-painiketta, hän palaa Activity B:n toiseen instanssiin. Tämä voi olla käyttäjälle hyvin hämmentävää. Aktiviteettien pinoamista ja luomista päällekkäin riippumatta siitä, mikä on kyseessä, kutsutaan vakiokäynnistystilaksi. Jos aktiviteetin XML:ssä manifestissa ei ole määritetty käynnistystilaa, aktiviteetti käyttää vakiomuotoista käynnistystilaa.