JobScheduler – Kodning i Flow
Sedan Android Oreo kan inaktiva appar inte längre hålla bakgrundstjänster igång. Så om du behöver göra operationer även om din app inte körs i förgrunden bör du använda en JobScheduler istället.
I den här videon kommer vi att konfigurera en sådan JobScheduler genom att skapa en klass som förlänger JobService och sedan schemalägga den med JOB_SCHEDULER_SERVICE.
I klassen JobService åsidosätter vi onStartJob och onStopJob. I onStartJob startar vi en bakgrundstråd för att utföra några långvariga (falska) operationer. I onStopJob avbryter vi vårt arbete eftersom systemet släpper wakelocken när kriterierna för vårt jobb inte längre uppfylls (t.ex. krävde vi ett nätverk utan mätning och användaren inaktiverar WiFi). I det här fallet planerar vi om vår uppgift för att försöka igen senare.
När vi planerar vårt jobb skickar vi ett JobInfo-objekt till JobScheduler, som definierar under vilka omständigheter vi vill att systemet ska utföra vårt jobb. Här kan vi ställa in kriterier som setRequiresDeviceCharging, setRequiredNetworkType, setPeriodic med mera. Vi kan till och med få den att överleva omstarter av enheten med setPersisted.
Sist vi registrerar vår JobService i manifestet med behörigheten android.permission.BIND_JOB_SERVICE och systemet kommer då att starta vår tjänst vid lämplig tidpunkt, även om vår app inte är igång.