Optymalizacja wydajnosci aplikacji na Android.pdf

(721 KB) Pobierz
Tytuł oryginału: Pro Android Apps Performance Optimization
Tłumaczenie: Tomasz Walczak
ISBN: 978-83-246-5555-7
Original edition copyright © 2012 by Hervé Guihot.
All rights reserved.
Polish edition copyright © 2013 by HELION SA.
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording or by any information storage
retrieval system, without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi
ich właścicieli.
Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za
związane z tym ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION
nie ponosi również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania
informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/optwyd.zip
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/optwyd
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
O autorze.......................................................................................................9
Redaktorzy techniczni .................................................................................11
PodziÚkowania ...........................................................................................13
Wprowadzenie ...........................................................................................15
Rozdziaï 1
Optymalizowanie kodu w Javie ..................................................................17
W jaki sposób Android wykonuje kod? ............................................................................. 18
Optymalizowanie obliczania ciągu Fibonacciego ............................................................. 20
Od rekurencji do iteracji ................................................................................................ 20
Typ BigInteger ................................................................................................................. 21
Zapisywanie wyników w pamięci podręcznej ................................................................... 25
Klasa android.util.LruCache<K, V> ............................................................................ 27
Wersje interfejsu API ............................................................................................................ 28
Fragmentacja rynku ........................................................................................................ 30
Struktury danych ................................................................................................................... 30
Reagowanie ............................................................................................................................. 33
Leniwe inicjowanie ......................................................................................................... 35
Klasa StrictMode ............................................................................................................. 35
SQLite ...................................................................................................................................... 37
Instrukcje bazy SQLite ................................................................................................... 37
Transakcje ........................................................................................................................ 40
Zapytania .......................................................................................................................... 41
Podsumowanie ....................................................................................................................... 42
Kup książkę
Poleć książkę
SPIS TRE¥CI
Rozdziaï 2
Wprowadzenie do pakietu NDK ..................................................................43
Co znajduje się w pakiecie NDK? ........................................................................................ 44
Łączenie Javy oraz C i C++ ................................................................................................... 46
Deklarowanie metody natywnej ................................................................................... 47
Implementowanie warstwy łączącej JNI ..................................................................... 47
Tworzenie plików makefile ........................................................................................... 49
Implementowanie funkcji natywnej ............................................................................ 50
Kompilowanie biblioteki natywnej .............................................................................. 52
Wczytywanie biblioteki natywnej ................................................................................ 52
Plik Application.mk ............................................................................................................... 53
Optymalizowanie pod kątem (prawie) wszystkich urządzeń ................................... 54
Obsługa wszystkich urządzeń ....................................................................................... 56
Plik Android.mk .................................................................................................................... 58
Usprawnianie wydajności za pomocą kodu w językach C lub C++ ............................... 60
Więcej o JNI ..................................................................................................................... 64
Klasa NativeActivity .............................................................................................................. 68
Budowanie brakującej biblioteki .................................................................................. 70
Inne podejście .................................................................................................................. 76
Podsumowanie ....................................................................................................................... 77
Rozdziaï 3
Zaawansowane mechanizmy pakietu NDK .................................................79
Asembler ................................................................................................................................. 79
Największy wspólny dzielnik ........................................................................................ 80
Przekształcanie zapisu kolorów .................................................................................... 84
Równoległe obliczanie średniej ..................................................................................... 88
Instrukcje architektury ARM ........................................................................................ 91
Rozszerzenie NEON ....................................................................................................... 98
Mechanizmy procesora .................................................................................................. 98
Rozszerzenia języka C ......................................................................................................... 100
Funkcje wbudowane ..................................................................................................... 100
Instrukcje dla wektorów .............................................................................................. 101
Wskazówki ............................................................................................................................ 105
Rozwijanie funkcji ........................................................................................................ 105
Rozwijanie pętli ............................................................................................................. 105
Wstępne wczytywanie do pamięci ............................................................................. 106
Stosowanie instrukcji LDM i STM zamiast LDR i STD .......................................... 107
Podsumowanie ..................................................................................................................... 107
Rozdziaï 4
Wydajne korzystanie z pamiÚci ................................................................109
Krótko o pamięci ................................................................................................................. 109
Typy danych ......................................................................................................................... 110
Porównywanie wartości ............................................................................................... 112
Inne algorytmy .............................................................................................................. 114
Sortowanie tablic ........................................................................................................... 115
Tworzenie własnych klas ............................................................................................. 116
4
Kup książkę
Poleć książkę
SPIS TRE¥CI
Dostęp do pamięci ............................................................................................................... 117
Długość wiersza w pamięci podręcznej ..................................................................... 118
Określanie struktury danych .............................................................................................. 118
Przywracanie pamięci ......................................................................................................... 123
Wyciekanie pamięci ..................................................................................................... 123
Referencje ....................................................................................................................... 124
Interfejsy API ....................................................................................................................... 128
Mała ilość pamięci ............................................................................................................... 128
Podsumowanie ..................................................................................................................... 129
Rozdziaï 5
WielowÈtkowo Ê i synchronizacja ............................................................131
Wątki ..................................................................................................................................... 132
Klasa AsyncTask .................................................................................................................. 134
Klasy Handler i Looper ....................................................................................................... 137
Obiekty Handler ........................................................................................................... 137
Obiekty Looper ............................................................................................................. 139
Typy danych ......................................................................................................................... 139
Model pamięci a słowa kluczowe synchronized i volatile ...................................... 140
Współbieżność ..................................................................................................................... 143
Architektury wielordzeniowe ............................................................................................ 144
Modyfikowanie algorytmu pod kątem architektury wielordzeniowej ........................ 145
Stosowanie współbieżnej pamięci podręcznej .......................................................... 148
Cykl życia aktywności ......................................................................................................... 150
Przekazywanie informacji ............................................................................................ 151
Zapamiętywanie stanu ................................................................................................. 153
Podsumowanie ..................................................................................................................... 156
Rozdziaï 6
Testy szybko ci i profilowanie ..................................................................157
Pomiar czasu ......................................................................................................................... 157
System.nanoTime() ...................................................................................................... 158
Debug.threadCpuTimeNanos() ................................................................................. 159
Śledzenie ................................................................................................................................ 160
Debug.startMethodTracing() ...................................................................................... 160
Korzystanie z narzędzia Traceview ............................................................................ 161
Narzędzie Traceview w perspektywie DDMS .......................................................... 163
Śledzenie kodu natywnego .......................................................................................... 164
Rejestrowanie komunikatów .............................................................................................. 166
Podsumowanie ..................................................................................................................... 168
Rozdziaï 7
Maksymalizowanie czasu pracy na baterii ................................................169
Baterie .................................................................................................................................... 169
Pomiar zużycia baterii .................................................................................................. 171
Wyłączanie odbiorników rozgłoszeniowych ................................................................... 174
Wyłączanie i włączanie odbiornika rozgłoszeniowego ........................................... 176
Sieć ......................................................................................................................................... 178
Pobieranie danych w tle ............................................................................................... 178
Transfer danych ............................................................................................................ 179
5
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin