Moram da priznam da smo mi isprobavali samo na dva telefona i na raznim emulatorima i tu nije bilo nekih problema. Možeš li da mi kažeš koji telefon imaš i na koju konkretnu akciju ti se dešava da se zamrzne?
HTC Magic, recimo pretraga. Nisam znao da pretražuje preko neta, sada je malo jasnije, mada stvarno deluje kao da recimo pretraga koristi isti thread kao i za GUI, za komunikaciju sa serverom. Kada se klikne na "traži", program pokuša da se konektuje na server i eventualno dođe do timeout-a jer nema konekcije, što je ok, samo što u toku pokušaja uspostavljanja veze mapa i ostatak GUI-a uopšte ne reaguju. Baš suprotno, kada pokušam da skrolujem mapu u ovom trenutku, program izbaci "force close" prozor (naravno nudi i opciju da ga pustim da odradi šta već radi - "wait"), ali ako to sve radi u threadovima mislim da ovako nešto ne bi smelo da se desi. Ne krivim vas, sasvim je moguće da je Google to loše odradio. Mogli su makar da stave neki dialog koji kaže da je konekcija neophodna i sl. Ovako, ja kliknem na search (bez konekcije), input dialog se regularno otvori, kliknem "traži", dugme požuti i ostane žuto par sekundi. Posle toga se dialog samo zatvori. U tom trenutku ja pokušam da skrolujem mapu i pojavi se "force close" dialog. Probajte emulator bez internet konekcije. Optimalno, pretraga bi trebalo da se izvršava paralelno sa ostatkom programa i trebalo bi da postoji neka animirana sličica da služi kao indikator da je pretraga u toku. Ako dođe do tajmauta ili već nekakve greške, "loading" sličica se sakrije i pojavi se "ok" dialog koji kaže da komunikacija sa serverom nije uspela i napomene da je neophodan internet da bi pretraga radila.
Takođe, program je spor kada kliknem na mapu da postavim destinaciju ili polazište. Treba mu par sekundi od momenta kad kliknem do kad se zastavica pojavi na mapi. Kapiram da i ovo ide preko interneta pa je u tome bio problem. Kada korisnik klikne na mapu, program šalje kordinate serveru koji vraća naziv ulice? Sve bi ovo bilo ok kada ova akcija ne bi uticala na GUI. Isto kao i sa pretragom imam utisak da sve radi u jednom threadu jer u tom periodu od par sekundi od kad kliknem na mapu dok se ne pojavi zastavica, mapa i GUI ne reaguju i program izbaci "force close" dialog kada pokušam da skrolujem mapu u ovom trenutku. Opet, optimalno bi bilo kada ova akcija ne bi uticala na GUI (npr. skrolovanje mape). Npr. ako sam u pravu da program šalje zahtev serveru za naziv ulice proces bi mogao da bude sledeći:
- korisnik klikne da postavi destinaciju
- zastavica se postavi lokalno, bez komunikacije sa serverom
- pojavi se nekakvo obaveštenje (ne dialog već neka poruka iznad mape) koje kaže "komunikacija sa serverom u toku" ili "dohvatam naziv ulice", sa nekom animiranom sličicom.
- ako komunikacija uspe, poruka se sakrije i destinacija (trenutno su kordinate) se zameni sa nazivom ulice
Ili makar da se pojavi onaj sistemski prozor koji prikazuje poruku i animiranu sličicu pa da se poruka stavi tu. Taj prozor blokira ceo GUI, čak i vizuelno, ali GUI je i ovako blokiran i prouzrokuje "force close" prozor u slučaju pokušaja interakcije dok treje komunikacija sa serverom.
Inače, i mi znamo da je brzina računanja optimalne rute najveći problem. Međutim, da bi ste shvatili koliko podataka je potrebno da telefon "samelje" da bi dao rezultat poslaću vam link na screenshot iz Google Earth gde smo prikazali sva stajališta koja imamo u aplikaciji.
Jedno rešenje, koje verovatno i nije neko rešenje, je da po ugledu na google napravite server koje će procesuirati informacije. Vi samo pošaljete početnu i krajnju kordinatu i server vrati rezultat. Kapiram da je problem što nemate server, što bi trebalo dosta truda uložiti da se algoritam prebaci na drugi jezik (tipa PHP, python itd.), da se napravi protokol za komunikaciju... Ukratko previše truda za besplatnu aplikaciju. Čisto pominjem, jer iako možda loše, mislim da jeste jedno od rešenja. Sa strane korisnika, najbolje bi bilo da program prvo pokuša da dohvati rezultate sa servera, pa ako to ne uspe pozove "lokalni" algoritam.