Android High Performance Programming
eBook - ePub

Android High Performance Programming

Enrique Lopez Manas, Diego Grancini

Buch teilen
  1. 412 Seiten
  2. English
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Android High Performance Programming

Enrique Lopez Manas, Diego Grancini

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

Build fast and efficient Android apps that run as reliably as clockwork in a multi-device world

About This Book

  • Wide coverage of various topics that help in developing optimal applications
  • Explore the concepts of Advanced Native Coding in depth
  • A must-have for professional-standard Android developers for whom performance failures and the sloppy use of resources are simply unacceptable

Who This Book Is For

This book is aimed at developers with an advanced knowledge of Android and who want to test their skills and learn new techniques to increase the performance of their applications. We assume they are comfortable working with the entire Android SDK, and have been doing it for a few years. They need to be familiar with frameworks such as NDK to use native code, which is crucial for app performance

What You Will Learn

  • Create Android applications that squeeze the most from the limited resource capacity of devices
  • Swap code that isn't performing
  • Efficient memory management by identifying problems such as leaks
  • Reap the benefits of multithreaded and asynchronous programming
  • Maximize the security and encryption mechanisms natively provided by Android
  • Perform efficient network operations and techniques to retrieve data from servers
  • Master the NDK to write native code that can perform faster operations

In Detail

Performant applications are one of the key drivers of success in the mobile world. Users may abandon an app if it runs slowly. Learning how to build applications that balance speed and performance with functionality and UX can be a challenge; however, it's now more important than ever to get that balance right.

Android High Performance will start you thinking about how to wring the most from any hardware your app is installed on, so you can increase your reach and engagement. The book begins by providing an introduction to state–of-the-art Android techniques and the importance of performance in an Android application. Then, we will explain the Android SDK tools regularly used to debug and profile Android applications. We will also learn about some advanced topics such as building layouts, multithreading, networking, and security. Battery life is one of the biggest bottlenecks in applications; and this book will show typical examples of code that exhausts battery life, how to prevent this, and how to measure battery consumption from an application in every kind of situation to ensure your apps don't drain more than they should.

This book explains techniques for building optimized and efficient systems that do not drain the battery, cause memory leaks, or slow down with time.

Style and approach

The book follows a tutorial-based approach to take the reader from the basic fundamentals of debugging to advanced performance-improvement concepts.

Häufig gestellte Fragen

Wie kann ich mein Abo kündigen?
Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
(Wie) Kann ich Bücher herunterladen?
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Welcher Unterschied besteht bei den Preisen zwischen den Aboplänen?
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Was ist Perlego?
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Unterstützt Perlego Text-zu-Sprache?
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ist Android High Performance Programming als Online-PDF/ePub verfügbar?
Ja, du hast Zugang zu Android High Performance Programming von Enrique Lopez Manas, Diego Grancini im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Ciencia de la computación & Tratamiento de datos. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Android High Performance Programming


Table of Contents

Android High Performance Programming
Credits
About the Authors
About the Reviewer
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Introduction: Why High Performance?
Why does the performance of an application mean so much to so many?
Manual testing and automatic testing
ANR and delays in software
What triggers ANRs and how can I avoid them?
Android architecture
Dalvik Virtual Machine
Memory management
Energy consumption
Java language
Native Development Kit or how to develop with native code when needed
Three limits in application responsiveness
Business value of software quality
Summary
2. Efficient Debugging
Android Debug Bridge
Dalvik Debug Monitor Server
Capturing and analyzing thread information
Heap analysis and visualization
Allocation tracker
Network usage
Emulator Control
System status
Debugging the UI
Profiling with Hierarchy Viewer
Systrace
Android device debug options
Android Instant Run
GPU profiler
Running a trace
ClassyShark
Getting started
Summary
3. Building Layouts
Walkthrough
Rendering performance
Screen tearing and VSYNC
Hardware acceleration
Overdraw
Multi-window mode
Overview
Configuration
Management
Drag and drop
Performance impact
Best practices
Provided layout overview
Hierarchical layout management
Reusing layouts
ViewStub
AdapterViews and view recycling
The ViewHolder pattern
Custom views and layouts
Screen zoom
Debugging tools
The Design view
Hierarchy Viewer
Tree View
View properties
Tree overview
Layout View
On device tools
Debugging GPU overdraw
Profile GPU rendering
Systrace
Summary
4. Memory
Walkthrough
How memory works
Garbage collection
Shared memory
Runtime
Android N JIT compiler
Memory leak
Memory churn
References
Memory-side projects
Project Svelte and Android N
Best practices
Data types
Autoboxing
Sparse array family
ArrayMap
Syntax
Collections
Enumerations
Constants
Object management
Strings
String concatenation
Local variables
Arrays versus collections
Streams
Memory patterns
The object pool pattern
The FlyWeight pattern
Android component leaks
Activities
Static fields
Non-static inner classes
Singletons
Anonymous inner classes
Handlers
Services
Processes
The memory API
Main components and memory management
Debugging tools
LogCat
Dalvik
ART
The ActivityManager API
StrictMode
Dumpsys
Meminfo
ProcStats
Summary
5. Multithreading
Walkthrough
Threading basics
Multicore CPUs
Threads
Multithreaded applications
Thread safety
Android multithreading environment
Processes
Android application thread
The UI thread
Worker threads
The binder thread
Android thread messaging
Best practices
Threads
HandlerThread
When to use
AsyncTask
Methods
Generics parameters
States management
Executor
When to use
Loaders
LoaderManager
LoaderCallbacks<D>
Provided loaders
AsyncTaskLoader
CursorLoader
When to use
Services
Life cycle
Started Service
When to use
Bound Service
When to use
IntentService
When to use
Inter-process communication
Remote Procedure Call
AIDL
Messenger
Advanced techniques
BroadcastReceiver asynchronous techniques
ContentProvider asynchronous techniques
Repeating tasks
Timer
ScheduledExecutorService
AlarmManager
Debugging tools
StrictMode
Summary
6. Networking
Walkthrough
Protocols
Methods
Headers
Timeout
Content
Compression
Response code
Connection types
Best practices
Latency gauging
Batching connections
Prefetching
Queuing connections
Caching responses
Cache control
Last-Modified
If-Modified-Since
Exponential back-off
Polling versus pushing
Provided APIs
SyncManager
Authenticator
SyncAdapter
Android N changes
Data Saver
Background optimization
GcmNetworkManager
The service implementation
Task scheduling
Task features
Task
OneoffTask
PeriodicTask
Debugging tools
Android N Networking ADB tool
Fiddler
Wireshark
Application Resource Optimizer
Network attenuation
Speed and delay emulation
Fiddler
Network Link Conditioner
Network Attenuator
Summary
7. Security
WhatsApp – the eternal showcase of "no-gos"
Going deeper into the code
Capturing an APK file
Pulling a file from the device
Capturing an APK using Wireshark
Using external websites
Autopsy of an APK file
Code injection
Opcodes
Injecting new code
Signing and rebuilding the application
Protecting our application
Insecure storage
SharedPreferences
InternalStorage
ExternalStorage
Deleting files
Using external or internal storage
Databases
Performance in databases
SQL injections
ORM frameworks
OrmLite
SugarORM
GreenDAO
Realm
Network
Encrypted communication
Sniffing
Summary
8. Optimizing Battery Consumption
Analysis
Monitoring battery level and charging status
How to identify changes in the charging status
Determining and reacting to changes in the battery level
Doze feature and App Standby
Understanding Doze
Avoiding useless network requests
Dealing with BroadcastReceivers on demand
Networking
Summary
9. Native Coding in Android
Getting started – setting up NDK in our system
JNI
Initial concepts
Creating our first HelloWorld-JNI
Creating a native activity with Android NDK
Debugging NDK
Android.mk
More variables in NDK
TARGET_PLATFORM
TARGET_ARCH
TARGET_ABI
NDK macros
Application.mk
Including existing libraries
Exporting header files
Summary
10. Performance Tips
Bitmaps
Loading
Processing
Caching
Displaying
Managing memory
Image optimization
Resolution
Compression
Serialization
JSON improvements
JSON alternatives
Protocol buffers
Flat buffers
Local serialization
Code improvements
Getters and setters
Inner classes
Java 8 in Android N
Setup
Features
Default interface methods
Static interface methods
Lambda expression
Repeating annotations
Jack toolchain
APK optimizations
Removing unused code
Removing unused resources
Summary
Index

Android High Performance Programming

Copyright © 2016 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in th...

Inhaltsverzeichnis