Android High Performance Programming
eBook - ePub

Android High Performance Programming

Enrique Lopez Manas, Diego Grancini

Share book
  1. 412 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Android High Performance Programming

Enrique Lopez Manas, Diego Grancini

Book details
Book preview
Table of contents
Citations

About This Book

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.

Frequently asked questions

How do I cancel my subscription?
Simply head over to the account section in settings and click on “Cancel Subscription” - it’s as simple as that. After you cancel, your membership will stay active for the remainder of the time you’ve paid for. Learn more here.
Can/how do I download books?
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
What is the difference between the pricing plans?
Both plans give you full access to the library and all of Perlego’s features. The only differences are the price and subscription period: With the annual plan you’ll save around 30% compared to 12 months on the monthly plan.
What is Perlego?
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, we’ve got you covered! Learn more here.
Do you support text-to-speech?
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Is Android High Performance Programming an online PDF/ePUB?
Yes, you can access Android High Performance Programming by Enrique Lopez Manas, Diego Grancini in PDF and/or ePUB format, as well as other popular books in Ciencia de la computación & Tratamiento de datos. We have over one million books available in our catalogue for you to explore.

Information

Year
2016
ISBN
9781785288951

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...

Table of contents