Activity on keskeinen osa Android-sovelluksen rakennetta, joka toimii käyttöliittymän ja sovelluksen välisten tapahtumien rajapintana. Useimmissa Android-sovelluksissa on vähintään yksi activity, joka vastaa käyttäjän näkemästä näytöstä. On kuitenkin sovelluksia, kuten taustapalveluita, jotka eivät vaadi lainkaan activityä, koska niillä ei ole graafista käyttöliittymää.
Activityt määritellään AndroidManifest.xml-tiedostossa, mikä kertoo järjestelmälle niiden olemassaolosta ja miten niitä voidaan kutsua. Yleensä sovelluksessa ilmoitetaan vähintään yksi activity, joka toimii sovelluksen käynnistyspisteenä ja näkyy laitteessa työpöytäsovelluksen kuvakkeena. Tämä on välttämätöntä, jotta järjestelmä tietää, mistä activitystä sovellus käynnistyy.
Activityn hallinta sisältää useita toimintoja: uuden activityn käynnistämisen intent-objektin avulla, siirtymisen eri activityjen välillä, tiedon siirtämisen activityjen välillä, tuloksen palauttamisen toisesta activitystä ja tilan tallentamisen esimerkiksi laitteen näytön kääntyessä. Lisäksi on olennaista ymmärtää activityn elinkaaren hallinta, joka määrittelee, miten activity reagoi erilaisiin käyttöjärjestelmän tapahtumiin kuten keskeytyksiin tai sulkemiseen.
Intent on olennainen osa activityjen välistä kommunikointia. Se on viesti, joka välittää tietoa activityltä toiselle tai käynnistää toimintaa esimerkiksi laitteen sisäisessä sovelluksessa, kuten oletusselaimen avaamisen. Intenttien avulla sovellus voi myös kutsua toisia sovelluksia tai niiden osia.
Android Studio on nykyisin ensisijainen työkalu Android-sovellusten kehittämiseen, ja sen mukana tulee Android SDK, joka tarjoaa tarvittavat kirjastot ja kehitysympäristön. Uuden projektin luominen Android Studiolla on helppoa, sillä se tarjoaa nopean aloitusvelhon, joka ohjaa läpi perusasetusten ja valmiin kehitysympäristön pystytyksen.
Kirjan esittämissä ohjeissa käytetään erityisiä tekstityylejä erottelemaan esimerkiksi koodit, tärkeät termit ja näytöllä näkyvät valikkotekstit, mikä helpottaa ohjeiden seuraamista. Lisäksi varoitukset ja vinkit on korostettu erillisissä laatikoissa, jotta lukija voi helposti havaita kriittiset tiedot.
Lisäksi kirjassa on osioita, jotka neuvovat, mistä voi ladata esimerkkikoodit, miten virheet (erratat) ilmoitetaan ja miten käyttäjät voivat antaa palautetta. Näin lukija voi aktiivisesti osallistua sisällön kehittämiseen ja saada apua ongelmatilanteissa.
On tärkeää ymmärtää, että Android-sovellusten kehitys vaatii selkeää käsitystä sekä käyttöliittymän että taustaprosessien toiminnasta. Activityjen lisäksi on tiedostettava, miten palvelut ja muut komponentit toimivat yhdessä. Activityjen elinkaaren hallinta on keskeinen osa sovelluksen vakauden ja käyttäjäkokemuksen varmistamista, sillä käyttöjärjestelmä voi keskeyttää tai lopettaa activityn monista syistä.
Koodiesimerkit ja niiden selitykset antavat konkreettisen näkymän siihen, miten eri asiat toteutetaan käytännössä, mutta lisäksi lukijan kannattaa tutustua Androidin viralliseen dokumentaatioon ja kehitysyhteisön materiaaleihin syventääkseen ymmärrystä. Sovellusten suunnittelussa on myös huomioitava turvallisuus- ja käyttöoikeuskysymykset, jotka vaikuttavat activityjen ja intenttien käyttöön.
Miten luoda kamera-sovellus Androidissa käyttäen vanhaa ja uutta Camera API:a
Kameran käyttö Android-sovelluksessa voi olla monivaiheinen prosessi, mutta oikeilla työkaluilla ja lähestymistavoilla voidaan helposti rakentaa toimiva kameraominaisuus. Tässä käsitellään sekä vanhan että uuden Camera API:n käyttöä. Kameran integroinnissa on tärkeää ymmärtää, että vaikka Camera API on pitkään ollut käytössä, sen korvasi uusi Camera2 API Android 5.0:ssa. Tämä uusi API tarjoaa enemmän hallintaa ja joustavuutta, mutta sen käyttö vaatii tarkempaa ymmärrystä asynkronisesta ohjelmoinnista.
Kun käytät Camera API:a, ensiksi sinun on määritettävä esikatselu ja sen jälkeen otettava kuva. Esikatselun luominen on ensimmäinen askel, ja se vaatii TextureView-komponentin käytön. Tässä vaiheessa määritellään, milloin esikatselun pinta on valmis ja voidaan käynnistää kameraesikatselu. Käytettävä koodi tähän vaiheeseen näyttää seuraavalta:
Kun TextureView on valmis, käytetään onSurfaceTextureAvailable-metodia, jossa asetetaan kamera esikatselupinnalle ja käynnistetään esikatselu:
Kun esikatselu on käynnistetty, seuraava vaihe on kuvan ottaminen, mikä tehdään napin painalluksella. Kuvan ottaminen tapahtuu takePicture-metodilla, joka käyttää Camera.PictureCallback-luokkaa:
Kuvan otettuaan, onPictureTaken-metodi käsittelee kuvan tallentamisen. Tässä vaiheessa kuva tallennetaan ulkoiseen tallennustilaan ja käyttäjälle näytetään viesti, että kuva on otettu:
On kuitenkin tärkeää huomioida, että vaikka tämä koodi toimii peruskameran ominaisuuksien kanssa, se ei ole valmis kaupalliseen käyttöön. Kamerasovelluksen kehittämisessä on monia haasteita, kuten kameran vaihtaminen, laiteorientaation huomioiminen esikatselussa ja kuvan tallennuksessa sekä asynkronisten tehtävien hallinta käyttöliittymän viivästymisen estämiseksi.
Erityisesti vanhan android.hardware.Camera-luokan käyttöön liittyy yksi tärkeä huomio: tämä luokka on poistunut käytöstä Android 5.0:ssa, ja sen tilalle tuli uusi android.hardware.camera2-API. Tämä API tarjoaa paremman hallinnan kamerasessioiden ja kuvien ottoon liittyvissä toiminnoissa, mutta sen käyttö on monivaiheista ja asynkronista.
Uuden API:n käytön aloituksessa luodaan projektissa tarvittavat globaalit muuttujat, kuten CameraDevice, CaptureRequest.Builder ja CameraCaptureSession. Tämän jälkeen määritellään kameraasettelut ja valitaan esikatselun koko:
Tämän jälkeen asetetaan kameran avaaminen ja esikatselualueen luominen seuraavalla koodilla. Tärkeää tässä on muistaa, että uuden API:n käyttöönotto vaatii paljon enemmän asynkronista koodia, joka hoidetaan CameraDevice.StateCallback-luokan avulla.
Erityisesti, jos sovellus haluaa tukea useampia kameroita (etukamera ja takakamera), on tärkeää muistaa lisätä tämä toiminnallisuus. Tähän voi lisätä koodin, joka tarkistaa, mitkä kamerat ovat käytettävissä laitteessa, ja mahdollistaa niiden valinnan sovelluksessa.
Muita tärkeitä tekijöitä ovat esimerkiksi laiteorientaation huomioiminen, kun esikatselu ja kuvaus tapahtuvat eri kulmista. Useimmat kehittyneemmät sovellukset käsittelevät kameran toimintoja taustaprosessissa, jotta käyttöliittymä ei viivästyisi.
Samoin, Camera API:n parametreilla voidaan säätää kamerasovelluksen asetuksia, kuten esikatselun kokoa. On tärkeää muistaa, että laitteiston täytyy tukea haluttuja asetuksia, jotta niitä voidaan käyttää:
Kaiken kaikkiaan, vaikka Camera API:n ja Camera2 API:n välillä on suuria eroja, kummankin käytössä on monia yhteisiä elementtejä. Tärkeintä on ymmärtää, että vaikka koodi on samankaltaista, uuden API:n käyttö vaatii enemmän käsittelyä asynkronisesti ja laajempaa virheenkäsittelyä.
Miksi Volley on parempi valinta kuin HttpURLConnection Android-kehityksessä?
Android tarjoaa useita kirjastoja verkkopyyntöjen tekemiseen, kuten Apache HttpClientin ja HttpURLConnectionin. Ennen Android 2.3 Gingerbread (API 9) -versiota Apache HttpClient oli suositeltu kirjasto. Android 2.3:n myötä HttpURLConnection sai merkittäviä parannuksia, ja se on edelleen Androidin suositeltu kirjasto. Vuoden 2016 Android 6.0 -päivityksessä Apache HttpClient poistettiin kokonaan SDK:sta, jolloin HttpURLConnection jäi ainoaksi vaihtoehdoksi. Vaikka HttpURLConnection toimii edelleen ja sillä on omat hyötynsä, sillä on myös huomattavia rajoituksia: se ei ole erityisen käyttäjäystävällinen, jos olet uusi verkkopyyntöjen kirjoittamisessa, ja se vaatii paljon toisteista koodia.
Onneksi Google Play -ryhmän kehittäjä Ficus Kirkpatrick esitteli uuden vaihtoehdon: Volleyn. Tämä kirjasto toimii yksinkertaisena kääreenä, joka tekee verkkopyyntöjen hallinnasta huomattavasti helpompaa. Vaikka Volley käyttää oletuksena HttpURLConnectionia, se voi myös käyttää muita kirjastoja. Volleyn tarjoamat edut verrattuna HttpURLConnectioniin ovat kiistattomat:
-
Säikeiden hallinta: Volley käyttää säie-aluetta (thread pool), joka oletuksena sisältää neljä säiettä.
-
Läpinäkyvä välimuisti: Volley huolehtii tiedon välimuistista automaattisesti, jolloin pyyntöjen toistaminen on tehokkaampaa.
-
Jonon prioriteetit: Volleyn avulla voit määrittää pyyntöjen prioriteetit, mikä voi parantaa sovelluksen suorituskykyä erityisesti monimutkaisissa verkkotapahtumissa.
Näiden etujen lisäksi yksi Volleyn suurimmista hyödyistä on koodin yksinkertaistaminen. Toisin kuin HttpURLConnection, jossa joudut usein kirjoittamaan paljon try-catch-lohkoja virheenkäsittelyä varten, Volley hoitaa nämä tarkistukset automaattisesti. Tämä vapauttaa kehittäjän keskittymään enemmän itse sovelluksen logiikkaan eikä verkko-ongelmien käsittelyyn.
Volley tukee seuraavia pyyntötyyppejä:
-
String (merkkijono)
-
JSON
-
Kuva
-
Mukautettu
Vaikka Volley on erinomainen valinta pienille ja keskikokoisille verkkopyynnöille (esimerkiksi listan selaamiseen), se ei ole optimaalisin valinta suurten tiedostojen lataamiseen. Tämä johtuu siitä, että kaikki Volleyn vastaanottamat tiedot käsitellään muistissa, mikä voi johtaa suorituskykyongelmiin, jos ladattava tiedosto on suuri. Suurille tiedostoille suosittelemme sen sijaan DownloadManagerin käyttöä, joka on optimoitu suurten latausten hallintaan. Jos taas tavoitteena on suoratoistaa sisältöä, HttpURLConnection on parempi vaihtoehto, sillä se tukee virtaavaa dataa.
Volleyn käyttö Android-projektissa on helppoa ja suoraviivaista, vaikka se ei ole mukana Android SDK:ssa. Se täytyy ladata erikseen ja lisätä projektiin. Seuraavat vaiheet opastavat sinut Volleyn lisäämiseen Android Studio -projektiin ja ensimmäisen pyynnön tekemiseen.
Ensiksi, sinun on ladattava Volleyn lähdekoodit käyttämällä Git-versionhallintaa. Tämä voidaan tehdä seuraavalla komennolla:
Jos Git ei ole sinulle tuttu, se on versionhallintaohjelmisto, joka on käytössä monilla alustoilla. Kun Git on asennettu, sen voi integroida Android Studioon.
Projekti kannattaa luoda Android Studioon nimellä "SetupVolley", valitsemalla "Phone & Tablet" ja "Empty Activity" valintaikkunoissa. Tämä luo yksinkertaisen Android-sovelluksen, jossa on yksi painike ja yksi tekstikenttä pyynnön tulosten näyttämiseen.
Volleyn ensimmäinen pyyntö tehdään seuraavasti: luodaan RequestQueue, johon lisätään StringRequest. Tämä pyyntö hakee tietoja määritetystä URL-osoitteesta ja tulostaa saadun vastauksen ensimmäiset 500 merkkiä.
Kun pyyntö on lisätty jonoon, se suoritetaan taustalla ja käyttäjä saa vastauksen nopeasti. Volleyn käyttämät säikeet varmistavat, että sovellus ei jumiudu verkkopyynnön aikana.
Volleyn poisto ja peruutus: Jos verkkopyynnön tulosta ei enää tarvita (esimerkiksi jos käyttäjä selaa ListViewtä ja uudet pyynnöt päivittyvät jatkuvasti), voit peruuttaa pyynnön, mikä säästää kaistaa, akkua ja CPU-tehoja. Tämä on tärkeää, koska pyynnön käsittelyn lopettaminen turhaan on hyvin resurssikäyttöistä. Jos käytät HttpURLConnectionia, joudut seuraamaan ja hallitsemaan kaikkia pyyntöjä manuaalisesti.
Volley on voimakas työkalu Android-kehittäjille, mutta se ei ole kaikenkattava ratkaisu. Vaikka se on erinomainen pienille verkkopyynnöille, suuret tiedostot ja suoratoisto vaativat muita työkaluja.
On tärkeää muistaa, että Volleyn tehokkuus tulee esiin erityisesti silloin, kun tehdään useita pieniä pyyntöjä peräkkäin. Sen välimuistimekanismi ja säikeiden hallinta tekevät siitä erinomaisen valinnan sovelluksiin, joissa verkko-ongelmia pyritään minimoimaan ja latausajat lyhentämään.
Miten loogiset operaattorit ja ensimmäisen asteen logiikka muodostavat perustan tekstin käsittelylle?
Mikä on kauneuden ja kuoleman välinen yhteys?
Miten virtuaalisointi toimii käytännössä ja miten se vaikuttaa järjestelmän resursseihin?
Voiko väärennetty asiakirja muuttaa historian kulun?
Apache Airflow: Parhaat käytännöt ja suositukset työnkulkujen hallintaan

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский