Gå til innhold

Android - Asynctask/service forskjell fra Tråder?


Anbefalte innlegg

Jeg forstår ikke helt hva poenget med Asynctask- og Service-klassene gjør!

Jeg har forstått hva oppgaven til en tråd er, men har disse noe med dette å gjøre?

 

Jeg holder på med et testprogram som laster ned en xml-fil fra internett, deretter parser denne.

Slik jeg har gjort det til nå:

1) Hovedklassen (klassen som styrer hele operasjonen) extender AsyncTask. 2) Deretter oppretter hovedklassen et objekt av klassen som laster ned filen. Nedlastnings-klassen extender ingenting.

3) Det samme skjer med xml-parseren etter at filen er lastet ned.

 

Er dette en opptimal løsning, eller vil dere anbefale at jeg gjør det på en annen måte?

Lenke til kommentar
Videoannonse
Annonse

Det er viktig at du forstår hva poenget med flertrådet programmering er, ellers er man fort ute på "glattisen" hvis man hopper rett på kodingen. Det finnes mange bøker om dette temaet, anbefaler at du studerer noen slike. Prinsippene er de samme, uavhengig om det er c#, java eller javascript for den del.

 

Å gjøre feks nettverkskall fra gui-tråden er som kjent bad practice. Og det er her asynctask kommer inn, man gjør tunge operasjoner i en bakgrunnstråd på en enkel måte.

 

Tilbake til det du har kodet hittil, hvis jeg har forstått deg riktig så gjør du det på riktig måte.

 

Det eneste som er litt uklart er om du oppretter en ny egen asynctask for xml-parseren når den skal kjøres. Dette trenger du ikke, du bør bruke samme asynctask til begge disse operasjonene. Altså at du gjør både nedlasting og parsing i samme asynctask. (En asynctask kan bruke så mange klasser du ønsker.)

 

Service i Android benyttes typisk for tråder som man har behov for å kjøre jevnlig i bakgrunnen og gjøre en eller flere oppgaver, uten gui.

Lenke til kommentar

Takk for godt svar!

 

Nei, jeg lager en ny "Hovedklasse" A. A er en asynctask-klasse. Klassen A oppretter igjen to klasser B (Nedlasting av fil, extender ikke Asynctask) og en klasse C (XML-parser, extender ikke Asynctask).

 

Da fortsetter jeg bare på det jeg har tenkt :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...