售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
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
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜