Intencje i przechowywanie danych
Kontekst (Context)
Intencje (Intents)
Intencje kont. 1
Intencje kont. 2
Intencje kont. 3
Sposoby przechowywania danych
Shared Preferences
Shared Preferences kont. 1
Shared Preferences kont. 2
Pamięć wewnętrzna
Pamięć wewnętrzna kont. 1
Pamięć wewnętrzna kont. 2
Pamięć wewnętrzna kont. 3
Pamięć wewnętrzna kont. 4
Pamięć zewnętrzna
Pamięć zewnętrzna kont. 1
Pamięć zewnętrzna kont. 2
Pamięć zewnętrzna kont. 3
Baza danych
Baza danych kont. 1
Baza danych kont. 2
Baza danych kont. 3
Content provider
Przykład – Historia połączeń
Przykład - List View Activity
ArrayAdapter
ListView
Wynik – MyListActivity
500.46K

Intencje i przechowywanie danych

1. Intencje i przechowywanie danych

Michail Mokkas

2. Kontekst (Context)

Activity i Service dziedziczą po klasie Context
Klasa ta stanowi źródło informacji na temat środowiska
aplikacji oraz jej zasobów
Za jej pomocą można też m.in. :
sprawdzić rozmiar przekątnej ekranu
uzyskać dostęp do usług systemu
tworzyć nowe obiekty (adapterów , listenerów)
Możemy otrzymać kontekst na kilka sposobów:
getApplicationContext()
getContext()
getBaseContext()

3. Intencje (Intents)

Jeden z podstawowych elementów, z których
budujemy aplikacje androidowe
Głównie używany do uruchamiania kolejnych
aktywnośći (Activities) w aplikacji
Może także służyć jako sposób komunikacji pomiędzy
komponentami (Services, Activities) lub aplikacjami w
sposób asynchroniczny

4. Intencje kont. 1

Przejście do kolejnej aktywności:
Odpalenie usługi (Service):

5. Intencje kont. 2

Typy intencji:
Jawne (explicit):
Niejawne (implicit):
Użytkownik ma możliwość wyboru aplikacji, za pomocą
której dokona dalsze akcje (np. przeglądarka do wyświetlenia
strony Google)

6. Intencje kont. 3

Wymiana danych:
Przesłanie:
Otrzymywanie:

7. Sposoby przechowywania danych

Shared Preferences (para: id + wartość)
Internal Storage (pamięć wewnętrzna)
External Storage (pamięć zewnętrzna)
SQLite Database (baza danych)
Network Service(usługa sieciowa)

8. Shared Preferences

Nadaje się do przetrzymywania prymitywnych typów
danych (boolean, float, int, String, long)
Dane zostaną przechowane pomiędzy sesjami (nawet
jeżeli aplikacja zostanie zatrzymana)
Przeznaczone głównie do przechowywania informacji
o ustawieniach
Dane są współdzielone ze wszystkimi komponentami
aplikacji

9. Shared Preferences kont. 1

Aby skorzystać z Shared Preferences, należy
zinicjalizować objekt SharedPreferences za pomocą
jednej z metod:
getSharedPreferences(pref_name): jeżeli potrzebujemy
kilku osobnych plików preferencyjnych
getPreferences(): jeżeli będziemy korzystać tylko z
jednego pliku preferencyjnego

10. Shared Preferences kont. 2

Aby zapisać wartości:
0 = MODE_PRIVATE //dostępne tylko z poziomu tej samej aplikacji (lub
aplikacji o tym samym user ID)
Editor - interfejs modyfikujący wartości SharedPreferences.
Aby odczytać wartości:

11. Pamięć wewnętrzna

Istnieje możliwość bezpośredniego zapisu danych w
pliku na pamięci wewnętrznej urządzenia
Domyślnie, pliki zapisane na pamięci wewnętrznej są
prywatne dla naszej aplikacji (inne aplikacje nie mają
prawa dostępu)
Użytkownik także nie ma do nich dostępu
Po odinstalowaniu aplikacji, pliki te są usuwane

12. Pamięć wewnętrzna kont. 1

Zapis:

13. Pamięć wewnętrzna kont. 2

Odczyt:

14. Pamięć wewnętrzna kont. 3

Tryby zapisu:
MODE_PRIVATE: tworzy i/lub nadpisuje plik (ustawia by był
prywatny)
MODE_APPEND: dopisuje do końca pliku
do dodania dwóch na raz wystarczy wykrozystać operator OR |
MODE_WORLD_WRITEABLE: pozwala na dostęp oraz
nadpisywanie tego pliku innym aplikacjom
MODE_WORLD_READABLE: pozwala na dostęp i
możliwość odczytania zawartości tego pliku innym
aplikacjom

15. Pamięć wewnętrzna kont. 4

Metody pomocnicze:
getCacheDir(): wykorzystywane do tymczasowego
przechowywania danych
getFileDir(): zwraca pełną ścieżkę katalogu w którym
znajdują się pliki (na wewnętrznej pamięci)
getDir(): tworzy lub otwiera wcześniej stworzony
katalog na wewnętrznej pamięci
deleteFile(): usuwa plik
fileList(): zwraca listę plików, które dana aplikacja
zapisała

16. Pamięć zewnętrzna

Zwykle jest to wymienna karta SD
Może być w każdej chwili wyjęta z urządzenia
Nie każde urządzenie posiada tego typu pamięć
Dodatkowo, jeżeli urządzenie jest podpięte do
komputera i jego zewnętrzna pamięć zamontowana do
przeglądu, uniemożliwia to jej użytkowanie w innych
celach

17. Pamięć zewnętrzna kont. 1

Aby uzyskać dostęp do pamięci zewnętrznej, nasza
aplikacja powinna w AndroidManifest zawierać:
android.permission.READ_EXTERNAL_STORAGE
Dodatkowo, by mogła tworzyć i/lub zapisywać pliki:
android.permission.WRITE_EXTERNAL_STORAGE
Zezwolenia te nie są potrzebne, jeżeli:
przeglądamy/zapisujemy prywatne pliki naszej aplikacji
(możliwość ta jest dostępna od wersji KitKat)
Do uzyskania ścieżki korzystamy z metody:
getExternalFilesDir()

18. Pamięć zewnętrzna kont. 2

Sprawdzenie czy pamięć zewnętrzna jest dostępna:

19. Pamięć zewnętrzna kont. 3

Pliki publiczne powinny znajdować się w publicznie
dostępnych katalogach, jak np. Music/ i Pictures/
Powyższy fragment kodu tworzy katalog na nowy
album ze zdjęciami
Dodatkowo także i tu mamy możliwość utworzenia
tymczasowych plików
getExternalCacheDir()

20. Baza danych

Android w pełni wspiera SQLite
Po stworzeniu bazy danych przez aplikację, mamy do
niej dostęp z poziomu każdej z jej klas
Rekomendowanym sposobem tworzenia bazy danych
jest stworzenie subklasy SQLiteOpenHelper i
przesłonięcie (override) metody onCreate()
W metodzie onCreate() możemy wykonać polecenia
SQL tworzące tabele w bazie danych

21. Baza danych kont. 1

22. Baza danych kont. 2

Następnie tworzymy instancję tej klasy i korzystamy z
metod:
getWritableDatabase()
getReadableDatabase()
Obydwie z nich zwracają nam obiekt reprezentujący bazę
danych, który udostępnia dodatkowe metody potrzebne
do zadań bazodanowych (insert, delete, update, itp.)
Możemy wykonywać zapytania za pomocą metod query(),
które zwrócą nam obiekt Cursor (zestaw wyników)

23. Baza danych kont. 3

Przykład dla operacji insert :

24. Content provider

Zazwyczaj tworzony po to, aby umożliwić dzielenie się
danymi (przechowywanymi w bazie danych) z innymi
aplikacjami
Aby uzyskać dostęp do danego content providera,
musimy go uwzględnić w AndroidManifest.xml
Musimy znać konkretny URI (Uniform Resource
Identifier)
Warto używać synchronized przed nazwami metod
korzystających z content providerów (dopuści tylko
jeden wątek na dostęp w tym samym czasie)

25. Przykład – Historia połączeń

26. Przykład - List View Activity

27. ArrayAdapter

Linkuje strukturę danych (np. ArrayList) do GUI list
view
Jeżeli chcemy zmodyfikować widok elementów listy
(np. dodać checkbox) musimy przesłonić funkcję
getView()

28. ListView

29. Wynik – MyListActivity

English     Русский Правила