Hjem Sosiale medier Hvordan du bruker en AsyncTask-klasse i din Android App-dummies

Hvordan du bruker en AsyncTask-klasse i din Android App-dummies

Innholdsfortegnelse:

Video: Android 101 by Fred Widjaja 2024

Video: Android 101 by Fred Widjaja 2024
Anonim

En AsyncTask er hva du bruker når noe tar for mye tid i løpet av Android-appen din. For eksempel ber brukeren en nettside. Hvem vet hvor lang tid det tar å hente siden? Tjenesten som er vert for nettsiden, kan oppstå høyt volum. Eller brukeren kan være på et tog som passerer gjennom en tunnel.

Alle typer ting kan redusere sidens gjenfinning. Og under denne hentingen vil brukeren kanskje klikke på knapper, bla et dokument, eller gjøre noe annet som krever et svar fra appen din.

Du kan ikke stoppe showet mens appen din venter på en nettside, henter en Twitter-tidslinje, eller oppdaterer brukerens Twitter-status. Derfor kodes du nettverksforespørselen i en AsyncTask.

Android's AsyncTask er allsidig nok til å håndtere alle typer verdier. Faktisk definerer dokumentasjonen en AsyncTask på denne måten:

android. os. AsyncTask

Definisjonen har tre generiske type plassholdere - Params, Progress og Result. Når du oppretter din egen AsyncTask, fyller du i blankene ved å spesifisere faktiske typer i stedet for Params, Progress og Result.

Posting a new tweet

For å legge til en tweet på vegne av brukeren, tar du et Twitter-objekt (forekomsten du har laget med fabrikken. GetInstance ()), og du kaller forekomstens oppdateringsstatusmetode. Du vil ikke at denne nettverksforespørselen skal avbryte strømmen av hovedaktiviteten din, så du legger forespørselen inne i en AsyncTask. Oppgavens navn er MyAsyncTaskTweet. Oppgavens tre generiske typer er som følger: String, Void og String:

offentlig klasse MyAsyncTaskTweet utvider AsyncTask << String , Gyldig , String >> { Den første typen (String) representerer en tweetegn på 140 tegn. Koden
  • utfør (editTextTweet. GetText (). ToString ())

    tar tak i en streng av tegn fra en av aktivitetens tekstfelter og sender denne strengen til MyAsyncTaskTweet. Inne i MyAsyncTaskTweet, kalles doInBackground-metoden som streng tweet [0] og bruker den tweet [0] -strengen for å oppdatere brukerens status.

    Parameteren til oppdateringsstatusmetoden er et arrayelement. Det er fordi, i DoInBackground-metodenes overskrift, er tweet en varargs-parameter. Ordet varargs betyr "variabelt antall argumenter. "Du kan passere så mange verdier som du vil. I kroppen av metoden behandler du tweet som om det er et vanlig utvalg. Den første tweetverdien er tweet [0]. Hvis det var en andre tweet-verdi, ville det være tweet [1], og så videre.
    

    Den andre typen (Void) står for en verdi (eller verdier) som markerer bakgrunns trådenes fremgang ved å fullføre arbeidet.

    Siden det ikke er noen fremdriftsindikator, er det andre typenavnet ugyldig.

  • I Java er Void-klassen en wrapper-klasse for tomrommet. Sett det i ditt svarte hull av ingenting!

    Den tredje typen (String) står for en setning som

    Suksess!

  • eller Kunne ikke tweet . DoInBackground-metoden finner strengen assosiert med enten R.-streng. suksess, R. streng. twitter_failure, eller R. streng. general_failure og returnerer denne strengen som resultat. Deretter viser onPostExecute-metoden denne strengen i skjermens editTextTweet-felt. Dette bildet oppsummerer måten generiske typenavn påvirker metodens typer.

    Bruken av typer i MyAsyncTaskTweet.

Bildet nedenfor oppsummerer hvordan verdier går fra ett sted til et annet i MyAsyncTaskTweet.

Strømmen av verdier i MyAsyncTaskTweet.

Få brukerens tidslinje

Hvis du har sett en AsyncTask, har du sett dem alle! Klassen MyAsyncTaskTimeline er nesten identisk med MyAsyncTaskTweet. De eneste forskjellene er som følger:

I MyAsyncTaskTweet blir parameteren som sendes til doInBackground, behandlet som en tweet. Men i MyAsyncTaskTimeline er parameteren som sendes til doInBackground, et brukernavn. Koden passerer dette brukernavnet til getUserTimeline-metoden.

I MyAsyncTaskTweet er verdien returnert fra doInBackground en suksess eller feilmelding. Men i MyAsyncTaskTimeline er verdien returnert fra doInBackground en streng full av tweets (en tidslinje).

  • Koden for å hente en brukers tidslinje ser slik ut:

  • Liste statuser = null; statuses = twitter. getUserTimeline (brukernavn [0]);

En fyr med navnet Yusuke Yamamoto utviklet Twitter4J (eller i det minste Yusuke Yamamoto var Twitter4J prosjektleder), og på et tidspunkt bestemte Mr. Yamamoto at getUserTimeline-metoden returnerer en samling av twitter4J. Statusobjekter. (Hver twitter4J. Status-forekomst inneholder en tweet.) Så, for å hedre kontrakten satt ved å ringe getUserTimeline-metoden, erklærer koden statusene som en samling av twitter4J. Statusobjekter.

Noen linjer senere i koden, en forbedret for setning går gjennom samlingen av statusverdier og legger til hver verdi tekst til en stor resultatstreng. Sløyfen legger til "n" (Java's go-to-the-next-line karakter) etter hvert tweet for godt mål. I onPostExecute-metoden viser koden den store resultatstrengen i skjermens textViewTimeline-felt.

I den andre doInBackground-metoden er det fullt kvalifiserte navnet twitter4j. Status brukes. Dette er gjort for å skille twitter4J. Statusklasse fra Android egen AsyncTask. Statusklasse (en indre klasse i AsyncTask-klassen).

En AsyncTask kan være ganske komplisert. Men når du sammenligner Android's AsyncTask til gjør-det-selv-tråderalternativene, er AsyncTask-ideen ikke dårlig i det hele tatt. Faktisk, når du får litt øvelse og lager noen av dine egne AsyncTask-klasser, blir du vant til å tenke på den måten. Hele virksomheten begynner å føle seg helt naturlig.

Hvordan du bruker en AsyncTask-klasse i din Android App-dummies

Redaktørens valg

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Skjermbildet i QuickBooks Modify Report dialogboksen lar deg kontrollere rapportintervalldatoen, rapportgrunnlaget, kolonnene og en annen formatering. Bokstavene Rapporter datoområde - Datoer, Fra og Til - gjør det samme som Datoer, Fra og Til bokser i Rapportvinduet. Disse boksene lar ...

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Hvis du klikker Tilpass rapport, QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Redaktørens valg

Administrere Cloud Computing Resources - dummies

Administrere Cloud Computing Resources - dummies

I teorien bør cloud computing-tjenester ikke være forskjellig fra ressursene i din eget miljø, bortsett fra at de bor eksternt. Ideelt sett har du en komplett visning av cloud computing-ressursene du bruker i dag, eller vil kanskje bruke i fremtiden. I de fleste skymiljøer kan kunden bare få tilgang til ...

Tips for Going Cloud med datanettverkene dine - dummies

Tips for Going Cloud med datanettverkene dine - dummies

Beregning med datanettverket ditt kan være, hva skal du gjøre for å ta nettverket ditt mot skyen? Her er noen anbefalinger: Ikke stole på en dårlig Internett-tilkobling. Først og fremst, før du tar noen av nettverksoperasjonene i skyen, gjør du ...

Nettverkstjenester levert gjennom Cloud Computing - dummies

Nettverkstjenester levert gjennom Cloud Computing - dummies

Tre forskjellige typer nettverkstjenester kan leveres via skyen: applikasjoner , plattformer og tjenester (infrastruktur). I de følgende avsnittene beskrives disse tre typer skyttjenester i større detalj. Programmer i skyen Vanligvis kalt Software as a Service (SaaS), fullt funksjonelle applikasjoner kan leveres via skyen. En av ...

Redaktørens valg

10 Hadoop Ressurser verdt en bokmerke - dummies

10 Hadoop Ressurser verdt en bokmerke - dummies

Følgende er ti fantastiske Hadoop-ressurser som er verdige til å skape en bokmerke i nettleseren din. Disse ressursene hjelper deg med å skape en livslang læringsplan for Hadoop. Sentralnervesystemet: Apache. org Apache Software Foundation (ASF) er det sentrale fellesskapet for open source-programvareprosjekter. Ikke bare et prosjekt kan være et Apache-prosjekt - ...

Data transformasjon i Hadoop - dummies

Data transformasjon i Hadoop - dummies

Ideen om Hadoop-inspirerte ETL motorer har fått mye trekkraft de siste årene. Hadoop er trods alt en fleksibel datalagrings- og behandlingsplattform som kan støtte store mengder data og operasjoner på dataene. Samtidig er det feiltolerant, og det gir mulighet for kapital- og programvarekostnad ...

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Når du lagrer en fil i HDFS, bryter systemet det ned i et sett med individuelle blokker og lagrer disse blokkene i forskjellige slave noder i Hadoop-klyngen. Dette er en helt vanlig ting å gjøre, da alle filsystemer bryter filer ned i blokker før de lagres til disk. HDFS har ingen ...