Hirdetés

Új hozzászólás Aktív témák

  • thon73
    tag

    Szia!

    Igen, ma fogok ott tartani gyakorlatban is, hogy a szebb megoldásokat is lépésről lépésre beépítem a programomba. Lesznek nehezítések még a cikked példájához képest, biztos, hogy fogok még kérdezni a témában. Saját adatbázisból próbálom lekérni a kiválasztott BKV járat legközelebb induló járatait. Mivel a legtöbb infót az offline sqlite db-ből szedi, viszont az érzékenyebb nagyobb lekéréseket már a netről, ezért kell nekem főleg az Async task, mivel az adatok egy részét (vonal neve, megállók) már kiírom kiválasztás után rögtön, de lehet az internetről szerzett adatok csak később érkeznek meg és íródnak ki. Szerintem itt jogos az AsyncTask használata. Viszont mi van, ha éppen nem sikerül neki számomra megfelelő adattal visszatérni, mert mondjuk pont nem kapaszkodott fel a wifi? Azt is kezelnem kellene. Illetve, ha elmúlt az adott időpont (elment a következő járat ) akkor újra csináljon egy lekérést, már a frissebb indulási időpontokkal visszatérve, valahogy rá kell vegyem, hogy a háttérben emberi időközönként frissítsen.

    A konkrét kérdésemre is megkaptam a választ, annyi volt a gond, amire számítottam is, osztálynévvel ki kellett egészítenem a változónevet, így már látja a változót, nem ír hibát! (van egy temérdek hiányosságom Javaból, PHP-ban dolgozom, nehéz átállni és néha csak úgy nem akar jönni a megoldás)

    A cikk kapcsán felmerült egy kérdés: Az érték megőrzése ha bezárult az alkalmazás dolog írtad, hogy a példádban már lejárt. Mikor várható leírás ennek az újabb verziójáról? Fragmentekre kell rákeresnem? Ott lesz a megoldás?

    A téma áthelyezése szerintem úgy lenne a legetikusabb mindenki számára, ha innen a diskurzus részeit néha bemásolod a cikked alá is. Mivel valóban ez az egyetlen magyar fórum itt van, hagy legyen meg itt is az érdeklődők számára, hasznos lesz ez egy év múlva, ha már többen mennek neki az Android home fejlesztésnek.

    Hogy az előző hozzászólást folytassam:
    Én az onPreExec.-ben, vagy a háttérszál legelején (tehát nem az activity-ban!) kérném el, ami már megvan (sqlite lekérdezés). Ezt, ill. a netről érkező adatokat folyamatosan szedném össze, és alkalmanként az onProgressUpdate megjelenítené azokat, ill. jelezné, h. tart a folyamat. Az onPostExecute csak annyit tesz a képhez, hogy "oké, minden adat kirajzolva!"
    Ha nincs pl. Wifi, akkor a háttérszál (hiba nélkül!!) befejezi a futást, és valahol kiírja, hogy "nincs net". Ez az az eset, amikor a háttérszál RENDBEN lefut, de a számítás "HIBÁS".
    Valahova odateszel egy gombot, hogy frissítés, és akkor - ha éppen nem fut - újraindítja az egészet. Vagy, ha gondolod, időnként - ha éppen nem fut - újraindítja az egészet. Én ez utóbbit kissé "költségesnek érzem", ha látom, hol a busz, nem vagyok kíváncsi arra, hol lesz 10 mp múlva. Vagy legalábbis 3g-n nem, ami a buszmegállóban azért valószínű.

    Másik ötlet: a lekérések service-ként futnak, amik időnként szólnak a fő programnak, hogy ezt vagy azt írjon ki. Itt talán könnyebb a kettőnél több folyamat indítása, ill. az időzítés; de ezzel nincs sok tapasztalatom. Azt sokan írták, hogy AsyncTask helyett többnyire service-ben gondolkodnak.

    :) Én is gratulálok a BKV kezdeményezéshez, én már a hétvégén ajánlgattam Pesten, h. létezik ilyen (csak nem találtam). Ezek szerint egy kicsit még várni kell rá... De jó lesz nagyon! Hátha még azt is megmondja, hogy egy nagy téren a 8 állásból melyikből indul az én buszom... ((Pestiek előnyben, én szegény vidéki GPS-sel közlekedem))

    Úúú! csak lemaradtam egy kérdésről. Ami lejárt az a ProgressDialog. Sztem., ettől függetlenül prímán működik, de lecserélhető akár Fragment-re is. Csak az olyan összetetté tenné a kódot, hogy a lényeg eltűnne, ezért maradtam a "régi" megoldásnál. Meg azért is, mert én 5 hüvelyken élek, semmi szükségem (még) a fragmentekre, majd a Note 8"-en :K !
    Az érték megőrzés másra vonatkozik: a végeredményt az AsyncTask osztályváltozója tárolja. Ha törlöd a mutatóját, akkor elveszik a végeredmény is. De egyébként az AsyncTask nem indítható ugyan újra, de nem veszik el (az eredmény sem), amíg új példányt nem indítasz.
    Jól értettem a kérdést?

Új hozzászólás Aktív témák