Android-programmering och systemstruktur

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Vad är den huvudsakliga funktionen av Android Runtime?

  • Köra applikationer i en virtuell miljö (correct)
  • Ge tillgång till lägre liggande bibliotek
  • Publicera och dela data mellan appar
  • Hantera hårdvaruresurser

Vilket lager hanterar hårdvaruresurser i Android-programstacken?

  • Linux kärna (correct)
  • Hardware Abstraction Layer
  • Java API Framework
  • System Appar

Vad innebär en Content Provider i Android?

  • Ett ramverk för att kommunicera med hårdvarukomponenter
  • En klass för att skapa grafiska gränssnitt
  • En uppsättning klasser som delar data mellan appar (correct)
  • En komponent för att lagra användardata lokalt

Vad är syftet med Hardware Abstraction Layer (HAL)?

<p>Att ge en högre kodnivå så applikationer kan köras oberoende av hårdvara (A)</p> Signup and view all the answers

Vilken del av Android-programstacken är mest relevant för utvecklare?

<p>Java API Framework (C)</p> Signup and view all the answers

Vad sker med varje applikation i Android?

<p>De får egen process och är skilt från andra (B)</p> Signup and view all the answers

Vilket API lager används för att utveckla programvara för Android?

<p>Java API Ramverk (D)</p> Signup and view all the answers

I vilken form presenteras data i en Content Provider?

<p>Databasliknande form med tabeller (B)</p> Signup and view all the answers

Vad är huvudsakligen View System i Android?

<p>Det är en samling av grafiska objekt som användargränssnittet bygger på. (A)</p> Signup and view all the answers

Vilken manager hanterar resurser som ligger under res-mappen?

<p>Resource Manager (B)</p> Signup and view all the answers

Vad är en Activitys livscykel status 'Paused'?

<p>Activityn är delvis skymd. (D)</p> Signup and view all the answers

Vilken metod rekommenderas nu för att spara applikationsdata?

<p>onStop() (A)</p> Signup and view all the answers

Vad gör Notification Manager?

<p>Möjliggör att appar kan få notifikationer och uppdateringar. (D)</p> Signup and view all the answers

Vad är den viktigaste delen av en egenutvecklad Android-app?

<p>Activity (B)</p> Signup and view all the answers

Om en Activityn dör, vad händer med instansen och dess resurser?

<p>De förstörs och går förlorade. (B)</p> Signup and view all the answers

Vilken manager ger tillgång till enhetens platsbestämning?

<p>Location Manager (D)</p> Signup and view all the answers

Vad är en vanligt förekommande orsak till att systemet stänger ned en process?

<p>Det finns en mindre appprioritet. (D)</p> Signup and view all the answers

Vilket scenario kräver godkännande från användaren?

<p>Kontrollera status på telefontjänsten. (A)</p> Signup and view all the answers

Vad gör Packet Manager?

<p>Ger information om installerade appar. (C)</p> Signup and view all the answers

Vilken typ av objekt kan inte skickas mellan aktiviteter genom vanliga kommunikationssätt?

<p>Komplexa datatyper (D)</p> Signup and view all the answers

Vad händer om tunga anrop till andra system görs på huvudtråden i en Android-app?

<p>Användaren kommer att uppfatta att appen låst sig. (B)</p> Signup and view all the answers

Vilken typ av trådning behövs för anrop till Internet i Android?

<p>Anropen måste vara trådade och kan inte köras på huvudtråden. (A)</p> Signup and view all the answers

Vad innebär att en Activity är 'Started'?

<p>Activityn visas helt för användaren. (A)</p> Signup and view all the answers

Vilka komponenter består en app av?

<p>Activities, Services och Broadcast Receivers. (B)</p> Signup and view all the answers

Vad är en fördel med att använda FusedLocation för att bestämma enhetens position?

<p>Det ger en mer exakt uppskattning av positionen genom att kombinera olika sensorer. (D)</p> Signup and view all the answers

Vad krävs för att använda GPS i en Android-app?

<p>Tillstånd både i Manifest-filen och realtidsfråga till användaren. (B)</p> Signup and view all the answers

Vilken komponent i Android används för att hantera affärslogik i MVC-mönstret?

<p>ViewModel (A)</p> Signup and view all the answers

Vad är ett krav för att koppla upp sig mot ett REST API i en Android-app?

<p>Tillstånd för Internet i Manifest-filen. (C)</p> Signup and view all the answers

Vad kännetecknar ett barn-fragment i Android?

<p>Det är en del av ett större gränssnitt. (C)</p> Signup and view all the answers

Vad är huvudsyftet med Activities och Fragments i Android?

<p>Att hantera användarinteraktion och gränssnitt. (D)</p> Signup and view all the answers

Vilken typ av databas är RealTimeDatabase i Firebase?

<p>En JSON-strukturerad realtidsdatabas. (C)</p> Signup and view all the answers

Vilket bibliotek rekommenderas för att hantera API-hämtning och trådning i Android?

<p>Retrofit (B)</p> Signup and view all the answers

Vad är syftet med ViewModel när man kommunicerar mellan Activities?

<p>Att spara och hantera data överlevande konfigurationsändringar. (B)</p> Signup and view all the answers

Vilken metod bör användas för att registrera en callback för resultat från en Activity?

<p>registerForActivityResult() (D)</p> Signup and view all the answers

Vad är skillnaden mellan explicita och implicita Intents?

<p>Implicita Intents kräver inget specifikt paketnamn. (A)</p> Signup and view all the answers

Vilket av följande påståenden om Fragments är korrekt?

<p>Fragments kan vara headless och sakna användargränssnitt. (D)</p> Signup and view all the answers

Vilket mönster rekommenderas för kommunikation mellan Fragments?

<p>Observer-mönstret med hjälp av LiveData. (B)</p> Signup and view all the answers

Vilket syfte har NavHostFragment i navigation mellan Fragments?

<p>Att förenkla navigering med hjälp av en nav_graph.xml fil. (A)</p> Signup and view all the answers

Vad karakteriserar en bakgrundsservice?

<p>Den används för långtidsspecifika uppgifter utan användargränssnitt. (D)</p> Signup and view all the answers

Vad kännetecknar en bunden service?

<p>Den kan acceptera flera kopplingar från olika komponenter. (D)</p> Signup and view all the answers

Hur kan man växla mellan olika Fragments?

<p>Genom FragmentManager och FragmentTransaction. (C)</p> Signup and view all the answers

Vad innebär det att en Activity eller Fragment är 'headless'?

<p>Den saknar ett användargränssnitt men kan fortfarande behandla logik. (C)</p> Signup and view all the answers

Vilken typ av Intent används typiskt för att starta en specifik Activity?

<p>Explicit Intent. (D)</p> Signup and view all the answers

Vad är syftet med LiveData i samband med ViewModel?

<p>Att observera och uppdatera UI automatiskt vid databasändringar. (B)</p> Signup and view all the answers

När bör registerForActivityResult användas istället för onActivityResult?

<p>För att registrera callbacks för resultat när en Activity startas. (D)</p> Signup and view all the answers

Vad är en FragmentContainerView?

<p>En behållare där Fragment kan placeras och hanteras. (A)</p> Signup and view all the answers

Vad händer med en StartedService om den har en aktiv bindning?

<p>Den fortsätter att köra oavsett om appen används. (A)</p> Signup and view all the answers

Vilken av följande metoder används för att spara data mellan olika sessioner av appen?

<p>Shared Preferences (C)</p> Signup and view all the answers

Vad är syftet med en Adapter i Android-programmering?

<p>Att anpassa data för att koppla till en AdapterView. (C)</p> Signup and view all the answers

Vilket alternativ beskriver RecyclerView korrekt?

<p>Det erbjuder större flexibilitet och bättre prestanda jämfört med ListView. (B)</p> Signup and view all the answers

Hur hanterar ViewBinding referenser till Views?

<p>Genom att automatiskt skapa ett objekt med referenser till layouts. (B)</p> Signup and view all the answers

Vilken typ av databas används ofta i Android-applikationer för att spara data permanent?

<p>SQLite (A)</p> Signup and view all the answers

Vad används SafeArgs i samband med?

<p>Överföring av data mellan Fragment med hjälp av Jetpack Navigation. (D)</p> Signup and view all the answers

Vad kännetecknar ListView som en AdapterView?

<p>Det kan visa data i en listformat med lyssnare för klick. (D)</p> Signup and view all the answers

Vilket av följande alternativ förklarar Bundle korrekt?

<p>Det används för att lagra data temporärt under en Activitys livstid. (C)</p> Signup and view all the answers

Vilken typ av layout kan RecyclerView använda?

<p>Både lineär och grid layout. (A)</p> Signup and view all the answers

Vilket av följande är ett korrekt användningsområde för Content Provider?

<p>För att överföra data mellan olika appar. (C)</p> Signup and view all the answers

Vad innebär det att en adapter återanvänder vyer?

<p>Det förbättrar prestanda genom att minska skapandet av nya vyer. (D)</p> Signup and view all the answers

Vilket påstående är korrekt om R-filen i Android?

<p>Den är en kompilerad klass med publika konstanter för resurser. (B)</p> Signup and view all the answers

Vilken av följande påståenden om Android LifeCycle management är korrekt?

<p>Det är viktigt för att förstå hur komponenter interagerar vid konfigurationsändringar. (C)</p> Signup and view all the answers

Flashcards

Androids Programstack

Androids programstack består av flera lager, inklusive Linux-kärna, Hardware Abstraction Layer (HAL), Android Runtime och Java API Framework. Dessa lager ger ett ramverk för utveckling av mobila applikationer.

Java API Framework

Java API Framework är det lager där de flesta Android-utvecklare interagerar. Det innehåller en mängd klasser och funktioner som gör det möjligt att bygga mobila appar.

Activity och Fragment

Activity och Fragment är delar av Java API Framework som ger ett sätt att hantera appens livscykel, t.ex. när appen startar, pausas eller stängs.

Content Providers

Content Providers är en del av Java API Framework som gör det möjligt att dela data mellan olika appar. Kontakter-appen använder exempelvis en Contacts Provider för att lagra och dela kontakter med andra appar.

Signup and view all the flashcards

Hardware Abstraction Layer (HAL)

Hardware Abstraction Layer (HAL) är ett lager som abstraherar hårdvaran på enheten. Det gör att programvara kan köras på olika enheter med olika hårdvara.

Signup and view all the flashcards

Android Runtime

Android Runtime är den virtuella maskin (VM) som används för att köra Java-kod på Android-enheter.

Signup and view all the flashcards

Linux-kärnan

Linux-kärnan är grunden för Android-operativsystemet. Den hanterar hårdvaruresurser och processer.

Signup and view all the flashcards

Applikationer i egna processer

Varje applikation på Android körs i en egen process och är normalt helt skild från andra processer. Detta ger ökad säkerhet och stabilitet.

Signup and view all the flashcards

View System

En samling av visuella objekt som används för att bygga upp användargränssnittet. Vanliga View kallas ofta "widgets" och layouter kallas "ViewGroups".

Signup and view all the flashcards

Managers

Klasser som hanterar viktiga delar av Android-systemet. Exempelvis hantering av resurser, aktiviteter och aviseringar.

Signup and view all the flashcards

Resource Manager

Hanterar åtkomsten till resurser, t.ex. bilder, strängar och animationer, som är nödvändiga för att applikationen ska fungera.

Signup and view all the flashcards

Activity Manager

Hanterar applikationens livscykel, specifikt deras Activitys. Har en stack för att hantera ”bakåt” knappen.

Signup and view all the flashcards

Notification Manager

Möjliggör för applikationer att visa aviseringar oavsett vilken app som för tillfället är aktiv.

Signup and view all the flashcards

Telephone Manager

Ger tillgång till telefontjänsten på enheten så att appar kan kontrollera status på telefontjänsten (inkommande samtal, pågående samtal, etc.).

Signup and view all the flashcards

Location Manager

Ger access till enhetens GPS-system för att tillåta applikationer att läsa av enhetens plats.

Signup and view all the flashcards

Packet Manager

Hanterar information om installerade appar på enheten så att en applikation kan fråga systemet om vilka andra appar som är installerade.

Signup and view all the flashcards

Processer

En Linux-process som utför applikationer, services och andra funktioner.

Signup and view all the flashcards

Activity

Den viktigaste delen av en Android-applikation. Det är här användargränssnittet byggs upp med Views och ViewGroups.

Signup and view all the flashcards

Activity States

De sex tillstånd som en Activity kan befinna sig i: Created, Started, Resumed, Paused, Stopped och Destroyed.

Signup and view all the flashcards

onStop()

En metod som anropas när en Activity stoppas.

Signup and view all the flashcards

onPause()

En metod som anropas när en Activity pausas, innan en annan Activity tar över skärmen

Signup and view all the flashcards

Starta en ny Activity

Skapar en ny instans av en Activity och låter den ta över skärmen.

Signup and view all the flashcards

Intent

Används för att kommunicera data mellan Activities. Det är ett standardiserat sätt att överföra data.

Signup and view all the flashcards

Parcelable eller Serializable

Överför data mellan Activities genom att implementera serialisering eller parcellation.

Signup and view all the flashcards

Startad tjänst (StartedService)

En tjänst som startas av en komponent i en app och kan springa vidare även om appen inte används längre.

Signup and view all the flashcards

Fragment

En komponent som hanterar appens livscykel, t.ex. när appen startar, pausas eller stängs.

Signup and view all the flashcards

Bundle

Används för att spara och överföra data mellan olika Aktiviteter och Fragment.

Signup and view all the flashcards

res-mappen

Mappen som innehåller resurser som bilder, strängar, layouter etc.

Signup and view all the flashcards

ViewBinding

En klass som genereras automatiskt och innehåller referenser till alla Views i en layout.

Signup and view all the flashcards

SafeArgs

En metod för att överföra data mellan Fragment via Gradle-pluginet.

Signup and view all the flashcards

ListView

En View som används för att visa en lista med data.

Signup and view all the flashcards

Adapter

En adapter används för att koppla data från en datakälla till en AdapterView.

Signup and view all the flashcards

ListActivity

En Activity som är avsedd för att visa listor med data.

Signup and view all the flashcards

ListFragment

Ett Fragment som är avsedd för att visa listor med data.

Signup and view all the flashcards

RecyclerView

En nyare variant av ListView med bättre prestanda och flexibilitet.

Signup and view all the flashcards

SQLite

En databas för att spara data på enheten.

Signup and view all the flashcards

Shared Preferences

En metod för att spara data i form av key-value-par.

Signup and view all the flashcards

ViewModel

Ett objekt som är associerat med en Activity och kan lagra användar- och applikationsdata, men inte referenser till Activitys eller Fragments. De överlever konfigurationsändringar och förstörs endast när en Activity avslutas.

Signup and view all the flashcards

registerForActivityResult

Används för att registrera en Callback så att en Activity kan returnera ett resultat till den anropande Activityn. Ett mer generellt sätt att skicka data tillbaka från en Activity.

Signup and view all the flashcards

Explicit Intent

Typ av Intent som anger vilken Activity som ska öppnas.

Signup and view all the flashcards

Implicit Intent

Typ av Intent som anger vilket handlingstyp som ska utföras, utan att ange vilken Activity som ska utföras.

Signup and view all the flashcards

FragmentManager

En komponent som hanterar Fragment och ansvarar för att byta mellan Fragments.

Signup and view all the flashcards

FragmentContainerView

En tagg i xml-filen som anger var ett Fragment ska visas.

Signup and view all the flashcards

FragmentTransaction

En samling av instruktioner för att utföra en operation på Fragments.

Signup and view all the flashcards

NavHostFragment

En struktur som innehåller statiskt definierade länkar mellan olika Fragments. Används för att navigera mellan Fragments.

Signup and view all the flashcards

NavHostController

Ett objekt som används för att utföra navigationsåtgärder mellan Fragments inom en NavHostFragment.

Signup and view all the flashcards

Services

En bakgrundskomponent som inte har ett användargränssnitt och är användbar för att utföra långvariga uppgifter, t.ex. att spela musik eller ladda ner data.

Signup and view all the flashcards

Bunden Service

En typ av Service som startas av en annan appkomponent (t.ex. en Activity) och kan acceptera flera kopplingar från andra appkomponenter. Fungerar som en klient-serverlösning.

Signup and view all the flashcards

Startad Service

En typ av Service som startas oberoende av en specifik appkomponent och kan köras i bakgrunden, även om användaren har stängt appen.

Signup and view all the flashcards

Arbetstrådar

Android kör sitt användargränssnitt på huvudtråden. Tung datahantering (databas, internet) kan blockera huvudtråden, vilket ger en "frusen" app. Arbetstrådar löser problemet.

Signup and view all the flashcards

Firebase

En samling molnbaserade tjänster, inklusive lagring och realtidsdatakällor.

Signup and view all the flashcards

RealTimeDataBase (RTDB)

En JSON strukturerad realtidsdatabas med asynkrona callbacks tillbaka till appen om nått ändras.

Signup and view all the flashcards

Cloud Firestore

En annan typ av databas i Firebase, men där data lagras i form av dokument.

Signup and view all the flashcards

Location

Enhetens position kan bestämmas via telemaster, WiFi-nät, internet-adresser och GPS. Olika precisionsnivåer: LOCATION_COURSE (mindre noggrann) och LOCATION_FINE (mer noggrann).

Signup and view all the flashcards

FusedLocation

Google Location Service kombinerar data från olika sensorer för att ge den mest exakta positionsuppskattningen. Fungerar bra med resurshantering.

Signup and view all the flashcards

API

REST API-anrop kräver tillstånd till Internet i Manifest-filen och trådar för att undvika att blockera huvudtråden.

Signup and view all the flashcards

Activities och Fragment

Aktiviteter (Activities) och Fragment används för att hantera appens livscykel och användargränssnitt. Övrig kod och logik bör hanteras i separata klasser.

Signup and view all the flashcards

Study Notes

Androids Programstack

  • Androids programstack baseras på Linuxkärnan.
  • Programstacken har olika lager.
  • Java API Framework är det lager utvecklare programmerar mot.
  • Hårdvarubiblioteket (C/C++) är ett lägre lager, kompilerat mot processorn.
  • Android Runtime (JVM/Dalvik JVM) är den virtuella maskinen.
  • Hardware Abstraction Layer (HAL) är ett abstraktionslager för hårdvara.
  • Linuxkärnan hanterar processer och resurser.
  • Varje applikation körs i en egen process.

Viktiga Delar för Utvecklare

  • Huvudfokus ligger på Java API Framework.
  • Anpassning till ramverkets regler är nödvändig.
  • Life-cycle-metoder är viktiga (Activity och Fragment).
  • HAL-lagret används för enhetens inbyggda sensorer (kamera, GPS).

Java API Framework

  • Innehåller färdig funktionalitet.
  • Utvecklare måste följa ramverkets regler.

Content Providers

  • Tillåter appar att publicera/dela data med andra appar.
  • Data presenteras i en databasliknande form.
  • Kräver användartillstånd.

View System

  • Uppbyggnad av användargränssnitt (UI).
  • Views (Widgets) och ViewGroups (Layouts).

Managers

  • Resource Manager: Hanterar resursfiler (exempelvis resurser i res-mappen).
  • Activity Manager: Hanterar Activitys livscykel, backstack.
  • Notification Manager: Hanterar aviseringar (meddelanden, ikoner, ljud/vibrationer).
  • Telephone Manager: Hanterar telefontjänsten.
  • Location Manager: Hanterar platsbestämning (GPS).
  • Packet Manager: Hanterar installerade appar, implicit Intent.

Appar och Processer

  • Processer kör appar, services och andra komponenter.
  • Varje app körs i en egen Linuxprocess.
  • Services kör ofta på huvudtråden (tänk på prestanda).
  • Systemet kan avsluta processer för att spara minne.

Activity

  • Viktig del av en app.
  • Utseendet definieras i en XML-fil.
  • Views och ViewGroups används.
  • Endast en Activity kan vara aktiv samtidigt.
  • Data i Activities kan överleva pausas/stopp.
  • Activities har olika states och life-cycle callbacks.
  • Implementera spara av data i onStop() för bättre prestanda.
  • Ej optimalt att ha långa processer i onPause().

Att Växla mellan Activities

  • Använd startActivity() för att starta en ny Activity.
  • Använd startActivityForResult() när du behöver ett resultat från den nya Activityn (nu deprecerad, använd registerForActivityResult).
  • Kommunikation mellan Activities sker via Intent (implicit och explicit).

Fragments

  • Liknande Activities, men mer dynamiska.
  • Används för att bygga komplexa gränssnitt.
  • Headless fragments existerar.
  • Övergångar hanteras genom FragmentManager.
  • Nuvarande rekommendation är användning av NavHostFragment och nav_graph.xml.

Services

  • Bakgrundskomponenter utan UI.
  • Används för långtidskörningar (exempelvis musik, dataöverföring).
  • Finns olika typer (startad, bunden).
  • Bundna services fortsätter att köras även om appen inte används.
  • Started Services kan köras även när appen inte är aktiv.

LifeCycle Management

  • Viktig hantering för Activities och Fragments.
  • Kopplas till konfigurationsändringar.

Bundle

  • Används för dataöverföring mellan Activities och Fragments.
  • Data sparas under appens livscykel.

Resources

  • Viktigt att hantera resurser (res-mappen).
  • R-filen innehåller konstanter för Views.
  • Olika mappar för olika skärmorienteringar och upplösningar.

ViewBinding

  • Automatiskt skapat objekt för View-referenser.
  • Undviker findViewById.
  • Typsäker och hanterar null bättre

SafeArgs (Directions)

  • Gradle plugin för dataöverföring mellan Fragments.
  • Används tillsammans med Navigation Component.

ListView/RecyclerView

  • ListView är en gammal standard.
  • RecyclerView är det moderna alternativet (mer effektivt).
  • Adapters används för att anpassa listorna till datakällor.

Adapters

  • Används för att formatera data till ListViews/RecyclerView.
  • Olika typer av adapters för olika datakällor.

Data Lagring/Delning

  • Bundle: Temp data under appens livstid.
  • Shared Preferences: Data mellan appens körningar.
  • SQLite: Lokal databas med Room Persistence Library.
  • Firebase (etc.): Molnbaserade tjänster (RTDB, Cloud Firestore) för data-delning mellan appar, olika användare.
  • Content Provider: Delning av data mellan appar.

Trådning

  • Androids View-system kör på huvudtråden.
  • Använd arbetstrådar för långa operationer (databasar, internet).
  • Firebase har inbyggd asynkronitet.

Modern Appbyggande och Navigering

  • Använd främst Fragments för att bygga gränssnitt i Activities.
  • Fragments är återanvändbara.

Workshops

  • Location: Använd FusedLocation för GPS-information.
  • API: Använd bibliotek för API-frågor och trådar anropen.
  • Firebase: Molntjänster för data-lagring, asynkrona callbacks.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

Use Quizgecko on...
Browser
Browser