736
Rozdział 17.
Jazda próbna
P
: Kiedyś już napisałem kod, który
po prostu wykonywał operacje na
bazie danych, i wszystko działało
świetnie. Czy takie operacje na bazie
naprawdę trzeba wykonywać w tle?
O
:
W przypadku naprawdę małych
baz danych, takich jak nasza, czas
dostępu do bazy danych będzie zapewne
niezauważalny. Ale będzie to wynikało
wyłącznie z małej wielkości bazy. Jeśli baza
będzie większa, albo jeśli uruchomimy
aplikację na wolniejszym urządzeniu, czas
dostępu do bazy zacznie mieć większe
znaczenie. Dlatego
owszem
— kod
operujący na bazie danych zawsze powinien
być wykonywany w tle.
P
: Przypomnijcie mi: dlaczego
aktualizowanie widoków z wątku
wykonywanego w tle jest błędem?
O
:
Najkrócej rzecz ujmując, taka próba
skończyłaby się zgłoszeniem wyjątku. Rozwijając
nieco ten temat, należałoby stwierdzić, że
wielowątkowe interfejsy użytkownika są
niezwykle podatne na występowanie błędów.
Android eliminuje ten problem, uniemożliwiając
stosowanie takich rozwiązań.
P
: Które fragmenty kodu
wykonującego operacje na bazie
danych są najwolniejsze?
O
:
Nie sposób tego ogólnie określić. Jeśli
używana baza danych ma złożoną strukturę,
to jej pierwsze otwarcie może zająć sporo
czasu, bo będzie wymagało utworzenia
wszystkich tabel. Także wykonanie
złożonych zapytań może zajmować bardzo
dużo czasu. Ogólnie rzecz biorąc, należy
podejść do zagadnienia ostrożnie i wszystkie
operacje na bazie danych wykonywać w tle.
P
: Jeśli odczytanie danych z bazy
zajmuje kilka sekund, to co zobaczy
użytkownik?
O
:
Użytkownik najpierw zobaczy puste
widoki, a dopiero po jakimś czasie zostaną
one wypełnione danymi.
P
: Dlaczego w zadaniu AsyncTask
umieściliście kod wykonujący operacje
na bazie danych z tylko jednej
aktywności?
O
:
Chcieliśmy Ci pokazać sposób
korzystania z klasy AsyncTask na jednej
aktywności w ramach przykładu. W praktyce
tak samo należy wykonywać wszystkie
operacje na bazach danych we wszystkich
aktywnościach.
głupie pytania
Nie istnieją
Jazda próbna aplikacji
Kiedy uruchomimy aplikację i przejdziemy do napoju, możemy
go oznaczyć jako ulubiony, klikając pole wyboru
Ulubiony.
Kliknięcie tego pola wciąż modyfikuje zawartość kolumny
FAVORITE
bazy danych, jednak tym razem kod odpowiedzialny
za tę operację jest wykonywany w wątku działającym w tle.
Nasza aplikacja zapisuje
dane w bazie danych, jednak
tym razem robi to w wątku
wykonywanym w tle.
W idealnym świecie cały kod związany
z operacjami na bazach danych powinien
być wykonywany w tle. My nie będziemy
zmieniać kodu pozostałych aktywności
aplikacji Coffeina w taki sposób,
lecz nic nie stoi na przeszkodzie,
byś Ty to zrobił.
Get Android Programowanie aplikacji. Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.