Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. http://gynsoft.net matt@gynsoft.net



Podobne dokumenty
akademia androida Service, BroadcastReceiver, ContentProvider część IV

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Programowanie Urządzeń Mobilnych. Laboratorium nr 9,10

akademia androida Pierwsze kroki w Androidzie część I

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

Programowanie usług działających w tle

Dokumentacja techniczna

Programowanie aplikacji dla Sklepu Windows w języku C#

Platformy Programistyczne Zagadnienia sieciowe i wątki

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Struktury systemów operacyjnych

Android poradnik programisty

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Fragmenty są wspierane od Androida 1.6

Życie aktywności Nawigując przez aplikacje poszczególne Aktywności przechodzą pomiędzy stanami. Dla przykładu gdy aktywność uruchamia się po raz

Android, wprowadzenie do SDK

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor

Programowanie na poziomie sprzętu. Programowanie w Windows API

API transakcyjne BitMarket.pl

Jak okiełznać frontend w Django? Piotr Maliński

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Specyfikacja techniczna. mprofi Interfejs API

Tworzenie aplikacji na platformie Android

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Systemy operacyjne na platformach mobilnych

Programowanie współbieżne Wykład 2. Iwona Kochańska

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Programowanie dla Androida. Ubiquitous

Instalujemy środowisko. Hello World! Odczyt/zapis informacji do komponentów na formie. onclick()

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Mechanizmy pracy równoległej. Jarosław Kuchta

Programowanie współbieżne i rozproszone

Aktualizacja SMSFall v Data publikacji:

Tworzenie i wykorzystanie usług

Funkcje backendu konfiguratora. Warszawa,

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Korporacyjna Magistrala Usług na przykładzie Mule ESB

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

IT Camp Junior Java Developer. Cel kursu

GUI - projektowanie interfejsów cz. II

AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty.

4. Procesy pojęcia podstawowe

Specyfikacja API Runtime BAS 3.0

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

Android i Bluetooth Low Energy. Laboratorium 4 Niestacjonarne

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Kolejkowanie wiadomości Standard MQ (JMS)

WSTĘP DO ANDROIDA. Laboratorium 2 Systemy i aplikacje bez granic

Dokumentacja API BizIn

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

XML i nowoczesne technologie zarządzania treścią 2007/08

4. Procesy pojęcia podstawowe

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

System operacyjny MACH

Podręcznik Integracji

Nowości w GG.pl. Prawdziwi znajomi prawdziwe rozmowy

Android tworzenie aplikacji mobilnych

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Roger Access Control System. Aplikacja RCP Point. Wersja oprogramowania : 1.0.x Wersja dokumentu: Rev. C

INSTRUKCJA OBSŁUGI APLIKACJI WEBFAX DLA

AndCourier. Kamil Janowski Mateusz Kowalski. Mobilna aplikacja bazodanowa wspomagająca pracę kurierską

Aplikacja Sieciowa wątki po stronie klienta

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

ApwPlan Harmonogram zadań

Połączenie aplikacji mobilnej z Facebookiem

EXSO-CORE - specyfikacja

SYSTEM LOJALNOŚCIOWY DBAJ O ZDROWIE W PROGRAMIE SUPERAPTEKA2000 PROCEDURY POSTĘPOWANIA DLA UŻYTKOWNIKA KOŃCOWEGO

Współbieżność w środowisku Java

Smarty PHP. Leksykon kieszonkowy

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Shoper (plugin dostępny w wersji ecommerce)

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Portal SRG BFG. Instrukcja korzystania z Portalu SRG BFG

asix4 Podręcznik użytkownika Drajwer DDE Podręcznik użytkownika

Programowanie urządzeń mobilnych. projekt 6 ( )

Program dla praktyki lekarskiej

HELIOS pomoc społeczna

Warszawa Specyfikacja techniczna. mprofi Interfejs API wersja 1.0.7

Specyfikacja HTTP API. Wersja 1.6

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją

EJB 3.0 (Enterprise JavaBeans 3.0)

Java Podstawy. Michał Bereta

Specyfikacja implementacyjna aplikacji mobilnej

Dokumentacja Użytkownika Systemu. Integracja z Okazje.info, Skąpiec, Sklepy24

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

GS2TelCOMM. Rozszerzenie do TelCOMM 2.0. Opracował: Michał Siatkowski Zatwierdził: IMIĘ I NAZWISKO

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

TRX API opis funkcji interfejsu

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Shoper (plugin dostępny w wersji ecommerce)

Transkrypt:

Wątki w Android OS Matt Rutkowski GynSoft sp. z o.o. http://gynsoft.net matt@gynsoft.net

Krótko o terminach związanych z Android OS... Android OS bazuje na Linuxie, każda aplikacja posiada własne User ID i jest widziana jako osobny użytkownik Activity reprezentuje pojedynczy ekran aplikacji Service usługa działająca w tle AndroidManifest plik konfiguracyjny Intent, bundle - uruchamianie Activity, przekazywanie danych

Wątek vs proces co to jest? Wątki Część programu wykonywana współbieżnie w obrębie jednego procesu W jednym procesie może istnieć wiele wątków Wątki działające w obrębie procesu współdzielą ze sobą dane i struktury systemowe API: java.lang.thread Proces Egzemplarz wykonywanego programu Posiada niezależne zasoby Każdy proces posiada osobną VM Każdy proces posiada unikatowe PID API: android.os.process

Wątek vs. proces w Android OS Wątki Architektura bazująca o pthread Domyślnie aplikacja działa w jednym wątku tzw. UI Thread Zmienne klasowe są dostępne dla każdego wątku i mogą być modyfikowane z niego Dostępne są trzy priorytety (MIN, NORMAL, MAX) Nie można bezpośrednio mody Wątki użytkownika nie mogą bezpośrednio modyfikować UI Proces Aplikacja może mieć jeden bądź kilka procesów Procesy posiadają swoje nazwy definiowane w AndroidManifest Skomplikowana i kosztowna komunikacja między procesami

Wątki w Android OS jak to działa Wątki androidowe zachowują się podobnie jak te z znane z Javy

Wątki w Android OS Messages Kiedy jest tworzony proces aplikacji, wątek główny tworzy kolejkę komunikatów (message queue) która obsługuje wszystkie zdarzenia wysyłane przez obiekty aplikacji Tworząc nowy wątek można komunikować się z wątkiem głównym poprzez tzw. Handler Handler jest przypisany do kolejki komunikatów w której został utworzony Handler dodaje komunikat do kolejki

Wątki w Android OS Messages Inny wątek chcący wysłać komunikat do UI Thread musi wywołać metodę obtainmessage(), kolejno wysyła do kolejki komunikat wywołując sendmessage() Handler przetwarza komunikaty w handlemessage() handlemessage() jest wywoływane dla każdego nadchodzącego komunikatu

Wątki w Android OS Messages

Wątki w Android OS Messages Wątek główny Inny wątek

Wątki w Android OS Messages Wysyłanie komunikatu: sendmessage() dodaje komunikat na końcu kolejki bez oczekiwania sendmessageatfrontofqueue() dodaje komunikat na początku kolejki sendmessageattime() dodaje komunikat do kolejki o określonym czasie bazując na systemowym uptime (SystemClock.uptimeMillis()) sendmessagedelayed() dodaje komunikat do kolejki z opóźnieniem podanym w milisekundach Czyszczenie kolejki komunikatów: removemessages() usuwa wszystkie komunikaty z kolejki

Wątki w Android OS Messages Przetwarzanie komunikatów odbywa się w handlemessage() który jest uruchamiany dla każdego komunikatu w kolejce w handlemessage(): można dokonywać zmian w UI Thread zmiany muszą być dokonywane szybko ponieważ inne operacje w UI Thread są zatrzymane do momentu zakończenia obsługi komunikatu

Wątki w Android OS Runnable Wątek główny Inny wątek

Wątki w Android OS Runnable Wysyłanie Runnable do kolejki komunikatów: post() dodaje Runnable do końca kolejki postatfrontofqueue() dodaje Runnable na początku kolejki postattime() - dodaje Runnable do kolejki o określonym czasie bazując na systemowym uptime (SystemClock.uptimeMillis()) postdelayed() dodaje Runnable do kolejki z opóźnieniem Czyszczenie kolejki komunikatów dla danego Runnable: removecallbacks()

Wątki w Android OS czego nie wolno... W oncreate() jakiegoś Activity W innym wątku:

Wątki w Android OS przykład 1

Wątki w Android OS przykład 1

Wątki w Android OS przykład 1

Wątki w Android OS przykład 1

Wątki w Android OS przykład 1

Wątki w Android OS przykład 1

Wątki w Android OS przykład 2

Wątki w Android OS przykład 2

Wątki w Android OS przykład 2

Wątki w Android OS przykład 2

Wątki w Android OS przykład 2

Wątki w Android OS przykład 2

Wątki w Android OS przykład 2

Wątki w Android OS przykład 3

Wątki w Android OS przykład 3 Goole Maps w MapView Dane pobieramy dynamicznie z WebAPI Informacje uaktualniamy w momencie przesunięcia mapy jak i zoom in/out Pokazujemy punkty na mapie

Wątki w Android OS przykład 3

Wątki w Android OS przykład 3

Wątki w Android OS przykład 3

Wątki w Android OS dobre praktyki

Wątki w Android OS dobre praktyki

Wątki w Android OS dobre praktyki XML / JSON XML pull parser / SAX spore pliki XML / JSON

Wątki w Android OS dobre praktyki

Wątki w Android OS wątki i debugowanie

Wątki w Android OS debugowanie Log.d("appname","event description") adb logcat DDMS