Android. Aplikacje wielowątkowe. Techniki przetwarzania

Book description

Ta książka w całości poświęcona jest korzystaniu z wątków na platformie Android. Dzięki niej poznasz przeróżne sposoby asynchronicznego przetwarzania oraz ich zalety i wady.

Table of contents

  1. Android Aplikacje wielowątkowe Techniki przetwarzania
  2. Dedykacja
  3. Przedmowa
    1. Czytelnicy
    2. Zawartość książki
    3. Konwencje użyte w tej książce
    4. Korzystanie z przykładów kodu
    5. Podziękowania
  4. 1. Komponenty systemu Android oraz potrzeba przetwarzania wieloprocesorowego
    1. Stos programowy systemu Android
    2. Architektura aplikacji
      1. Aplikacja
      2. Komponenty
        1. Komponent Activity
        2. Komponent Service
        3. Komponent ContentProvider
        4. Komponent BroadcastReceiver
    3. Wykonywanie aplikacji
      1. Procesy systemu Linux
      2. Cykl życia
        1. Uruchamianie aplikacji
        2. Kończenie działania aplikacji
    4. Strukturyzacja aplikacji w celu zwiększenia wydajności
      1. Tworzenie aplikacji responsywnych za pomocą wątków
    5. Podsumowanie
  5. I. Podstawy
    1. 2. Wielowątkowość w Javie
      1. Podstawy wątków
        1. Wykonywanie
        2. Aplikacja jednowątkowa
        3. Aplikacja wielowątkowa
          1. Zwiększone zużycie zasobów
          2. Zwiększona złożoność
          3. Niespójność danych
      2. Bezpieczeństwo wątków
        1. Blokada wewnętrzna i monitor Javy
        2. Synchronizowanie dostępu do zasobów współdzielonych
          1. Korzystanie z blokady wewnętrznej
          2. Korzystanie z jawnego mechanizmu blokowania
        3. Przykład: konsument i producent
      3. Strategie wykonywania zadań
        1. Model wykonywania współbieżnego
      4. Podsumowanie
    2. 3. Wątki w systemie Android
      1. Wątki aplikacji w systemie Android
        1. Wątki interfejsu użytkownika
        2. Wątki wiązania
        3. Wątki w tle
      2. Proces i wątki systemu Linux
        1. Szeregowanie
          1. Priorytet
          2. Grupy kontrolne
      3. Podsumowanie
    3. 4. Komunikacja wątków
      1. Potoki
        1. Podstawowe zastosowanie potoków
        2. Przykład: przetwarzanie tekstu w wątku roboczym
      2. Pamięć współdzielona
        1. Sygnalizacja
      3. Interfejs BlockingQueue
      4. Przesyłanie komunikatów w systemie Android
        1. Przykład: podstawowe przesyłanie komunikatów
        2. Klasy stosowane w przesyłaniu komunikatów
          1. Klasa MessageQueue
          2. Klasa MessageQueue.IdleHandler
          3. Przykład: użycie interfejsu IdleHandler do zakończenia niewykorzystywanego wątku
        3. Komunikaty
          1. Zainicjowany
          2. Oczekujący
          3. Wysłany
          4. Odzyskany
        4. Looper
          1. Zakończenie obiektu Looper
          2. Looper wątku interfejsu użytkownika
        5. Handler
          1. Konfiguracja
          2. Tworzenie komunikatu
          3. Wstawianie komunikatów
          4. Przykład: dwukierunkowe przesyłanie komunikatów
          5. Przetwarzanie komunikatów
        6. Usuwanie komunikatów z kolejki
        7. Obserwowanie kolejki komunikatów
          1. Robienie zrzutu bieżącej kolejki komunikatów
          2. Śledzenie przetwarzania kolejki komunikatów
      5. Komunikacja z wątkiem interfejsu użytkownika
      6. Podsumowanie
    4. 5. Komunikacja między procesami
      1. RPC systemu Android
        1. Binder
      2. Język AIDL
        1. Synchroniczne wywołanie RPC
        2. Asynchroniczne wywołanie RPC
      3. Przekazywanie komunikatów za pomocą obiektu Binder
        1. Komunikacja jednokierunkowa
        2. Komunikacja dwukierunkowa
      4. Podsumowanie
    5. 6. Zarządzanie pamięcią
      1. Odzyskiwanie pamięci
      2. Wycieki pamięci związane z wątkiem
        1. Wykonywanie wątku
          1. Klasy wewnętrzne
          2. Statyczne klasy wewnętrzne
          3. Niedopasowanie cyklu życia
        2. Komunikacja wątków
          1. Wysyłanie komunikatu danych
          2. Przesyłanie komunikatu zadań
      3. Unikanie wycieków pamięci
        1. Korzystanie ze statycznych klas wewnętrznych
        2. Korzystanie ze słabych referencji
        3. Zatrzymywanie wykonywania wątku roboczego
        4. Zachowanie wątków roboczych
        5. Czyszczenie kolejki komunikatów
      4. Podsumowanie
  6. II. Techniki asynchroniczne
    1. 7. Zarządzanie cyklem życia wątku podstawowego
      1. Podstawy
        1. Cykl życia
        2. Przerwania
        3. Wyjątki nieprzechwycone
      2. Zarządzanie wątkami
        1. Definiowanie i uruchamianie
          1. Anonimowa klasa wewnętrzna
          2. Wątek publiczny
          3. Definiowanie wątku statycznej klasy wewnętrznej
          4. Podsumowanie opcji definiowania wątku
        2. Retencja
          1. Zachowywanie wątku w obiekcie Activity
          2. Zachowywanie wątku w klasie Fragment
      3. Podsumowanie
    2. 8. Klasa HandlerThread: wysokopoziomowy mechanizm kolejkowania
      1. Podstawy
      2. Cykl życia
      3. Przypadki użycia
        1. Powtarzające się wykonywanie zadania
        2. Zadania powiązane
          1. Przykład: persystencja danych z interfejsem SharedPreferences
        3. Łańcuchowanie zadań
          1. Przykład: łańcuchowane wywołania sieciowe
        4. Warunkowe wstawianie zadania
      4. Podsumowanie
    3. 9. Kontrola wykonywania wątku za pomocą frameworku wykonawcy
      1. Interfejs Executor
      2. Pule wątków
        1. Predefiniowane pule wątków
        2. Niestandardowe pule wątków
          1. Konfiguracja klasy ThreadPoolExecutor
        3. Projektowanie puli wątków
          1. Ustalanie rozmiaru
          2. Dynamika
          3. Ograniczona lub nieograniczona kolejka zadań
          4. Konfiguracja wątku
          5. Rozszerzanie klasy ThreadPoolExecutor
        4. Cykl życia
        5. Zamykanie puli wątków
        6. Przypadki użycia i pułapki pul wątków
          1. Faworyzowanie tworzenia wątku kosztem kolejkowania
          2. Obsługa wstępnie załadowanych kolejek zadań
          3. Niebezpieczeństwo zerowej liczby wątków podstawowych
      3. Zarządzanie zadaniami
        1. Reprezentacja zadania
        2. Zatwierdzanie zadań
          1. Zatwierdzenie pojedyncze
          2. Metoda invokeAll
          3. Metoda invokeAny
        3. Odrzucanie zadań
      4. Klasa ExecutorCompletionService
      5. Podsumowanie
    4. 10. Wiązanie zadania w tle z wątkiem interfejsu użytkownika za pomocą klasy AsyncTask
      1. Podstawy
        1. Tworzenie i uruchamianie
        2. Anulowanie
        3. Stany
          1. Przykład: ograniczenie wykonywania instancji AsyncTask do jednej naraz
      2. Implementacja klasy AsyncTask
        1. Przykład: pobieranie obrazów
      3. Wykonywanie zadania w tle
        1. Wykonywanie globalne dla aplikacji
        2. Wykonywanie zadań w różnych wersjach platformy
        3. Wykonywanie niestandardowe
          1. Przykład: nieglobalne wykonywanie sekwencyjne
      4. Alternatywy dla klasy AsyncTask
        1. Trywialne implementacje klasy AsyncTask
        2. Zadania w tle wymagające instancji Looper
        3. Usługa lokalna
        4. Korzystanie z metody execute(Runnable)
      5. Podsumowanie
    5. 11. Usługi
      1. Dlaczego warto wykorzystać komponent Service do wykonywania asynchronicznego?
      2. Usługi lokalne, zdalne i globalne
      3. Tworzenie i wykonywanie
      4. Cykl życia
      5. Usługa uruchamiana
        1. Implementacja metody onStartCommand
        2. Opcje ponownego uruchamiania
        3. Usługa kontrolowana przez użytkownika
          1. Przykład: połączenie Bluetooth
        4. Usługa kontrolowana przez zadanie
          1. Przykład: pobieranie współbieżne
      6. Usługa wiązana
        1. Wiązanie lokalne
      7. Wybór techniki asynchronicznej
      8. Podsumowanie
    6. 12. Klasa IntentService
      1. Podstawy
      2. Dobre sposoby wykorzystania klasy IntentService
        1. Zadania uporządkowane sekwencyjnie
          1. Przykład: komunikacja usług sieciowych
        2. Wykonywanie asynchroniczne w komponencie BroadcastReceiver
          1. Przykład: okresowe operacje długotrwałe
      3. Porównanie klas IntentService oraz Service
      4. Podsumowanie
    7. 13. Uzyskiwanie dostępu do klasy ContentProvider za pomocą klasy AsyncQueryHandler
      1. Krótkie wprowadzenie do klasy ContentProvider
      2. Uzasadnienie dla przetwarzania w tle klasy ContentProvider
      3. Korzystanie z klasy AsyncQueryHandler
        1. Przykład: rozszerzanie listy kontaktów
        2. Klasa AsyncQueryHandler
        3. Ograniczenia
      4. Podsumowanie
    8. 14. Automatyczne wykonywanie w tle za pomocą ładowarek
      1. Framework ładowarek
        1. Klasa LoaderManager
          1. Porównanie metod initLoader oraz restartLoader
        2. Interfejsy LoaderCallbacks
        3. Klasa AsyncTaskLoader
      2. Bezproblemowe ładowanie danych za pomocą ładowarki CursorLoader
        1. Korzystanie z ładowarki CursorLoader
        2. Przykład: lista kontaktów
        3. Dodawanie obsługi operacji CRUD
          1. Przykład: korzystanie z ładowarki CursorLoader za pomocą klasy AsyncQueryHandler
      3. Implementowanie niestandardowych ładowarek
        1. Cykl życia ładowarki
        2. Ładowanie w tle
          1. Przykład: prosta ładowarka niestandardowa
        3. Zarządzanie treścią
        4. Dostarczanie zbuforowanych rezultatów
        5. Przykład: niestandardowa ładowarka plików
        6. Obsługa wielu ładowarek
      4. Podsumowanie
    9. 15. Podsumowanie: wybór techniki asynchronicznej
      1. Zachowanie prostoty
      2. Zarządzanie zasobami i wątkami
      3. Wymiana komunikatów w celu uzyskania responsywności
      4. Unikanie nieoczekiwanego zakończenia zadania
      5. Łatwy dostęp do klasy ContentProvider
  7. A. Bibliografia
    1. Książki
    2. Artykuły
    3. Prezentacje
  8. B. O autorze
  9. Indeks
  10. Kolofon
  11. Copyright

Product information

  • Title: Android. Aplikacje wielowątkowe. Techniki przetwarzania
  • Author(s): Anders Goransson
  • Release date: December 2014
  • Publisher(s): Helion
  • ISBN: 97888324696178

You might also like

book

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

by Aurélien Géron

随着一系列的技术突破,深度学习推动了整个机器学习领域的发展。现在,即使是对这项技术几乎一无所知的程序员也可以使用简单有效的工具来实现“可以自动从数据中学习”的程序。这本畅销书的更新版通过具体的示例、非常少的理论和可用于生产环境的Python框架来帮助你直观地理解并掌握构建智能系统所需要的概念和工具。 你会学到一系列可以快速使用的技术。每章的练习可以帮助你应用所学的知识,你只需要有一些编程经验。所有代码都可以在GitHub上获得。它已更新为TensorFlow 2和Scikit-Learn的新版本。 使用Scikit-Learn和pandas通过端到端项目来学习机器学习基础。 使用TensorFlow 2构建和训练多个神经网络架构来进行分类和回归。 覆盖对象检测、语义分割、注意力机制、语言模型、GAN等。 探索Keras API与TensorFlow 2的官方高级API。 使用TensorFlow的数据API、分布策略API、TF Transform和TF-Serving来部署TensorFlow模型。 在Google Cloud AI Platform或移动设备上部署。 …

book

Bezpieczenstwo tozsamosci i danych w projektach Web

by Jonathan LeBlanc, Tim Messerschmidt

Bezpieczenstwo tozsamosci i danych w projektach Web

book

C# 6.0 – Księga Przepisów

by Jay Hilyard, Stephen Teilhet

Nowe wydanie bestsellerowej ksiazki w pelni zaktualizowane do wersji C 60 oferuje ponad 150 uzytecznych rozwiazan …

book

이펙티브 타입스크립트

by Dan Vanderkam

TypeScript는 JavaScript가 유명한 많은 골칫거리를 해결할 가능성이 있는 JavaScript의 유형이 지정된 상위 집합입니다. 그러나 TypeScript에는 자체 …