Index
A
- activities, Android components leaks
- about / Activities
- static fields / Static fields
- non-static inner classes / Non-static inner classes
- singletons / Singletons
- anonymous inner classes / Anonymous inner classes
- handlers / Handlers
- Activity class
- Activity.isMultiWindow() / Management
- Activity.inPictureInPicture() / Management
- Activity.onMultiWindowChanged() / Management
- Activity.onPictureInPictureChanged() / Management
- ActivityManager API
- about / The ActivityManager API
- ActivityManager class, methods
- getMemoryClass / The memory API
- getLargeMemoryClass / The memory API
- getMemoryInfo / The memory API
- getMyMemoryState / The memory API
- isLowRamDevice / The memory API
- AdapterViews
- about / AdapterViews and view recycling
- ViewHolder pattern / The ViewHolder pattern
- ADB (Android Debug Bridge)
- about / Android Debug Bridge
- functionalities / Android Debug Bridge
- advanced techniques, multithreading
- about / Advanced techniques
- BroadcastReceiver asynchronous techniques / BroadcastReceiver asynchronous techniques, ContentProvider asynchronous techniques
- recurring task / Repeating tasks
- Alert Area
- about / Systrace
- allocation tracker
- about / Allocation tracker
- analysis step
- about / Analysis
- battery level, monitoring / Monitoring battery level and charging status
- charging status, monitoring / Monitoring battery level and charging status
- changes, identifying in charging status / How to identify changes in the charging status
- changes, determining in battery level / Determining and reacting to changes in the battery level
- reacting to changes, in battery level / Determining and reacting to changes in the battery level
- Android.mk
- about / Creating a native activity with Android NDK, Android.mk
- LOCAL_LDLIBS / Creating a native activity with Android NDK
- LOCAL_STATIC_LIBRARIES / Creating a native activity with Android NDK
- Android application thread
- about / Android application thread
- background thread / Android application thread
- worker thread / Android application thread, Worker threads
- UI thread / The UI thread
- binder thread / The binder thread
- Android architecture
- about / Android architecture
- Android Asset Packaging Tool (aapt) / Autopsy of an APK file
- Android components leaks
- about / Android component leaks
- activities / Activities
- services / Services
- Android Devices Debug options
- about / Android device debug options
- Android Instant Run
- about / Android Instant Run
- Android Interface Definition Language (AIDL) / The binder thread
- about / AIDL
- Android multithreading environment
- about / Android multithreading environment
- processes / Processes
- Android N changes, networking
- about / Android N changes
- Data Saver / Android N changes, Data Saver
- background optimizations / Android N changes, Background optimization
- GcmNetworkManager / GcmNetworkManager
- Android NDK
- native activity, creating with / Creating a native activity with Android NDK
- Android N JIT compiler
- about / Android N JIT compiler
- Android N Networking ADB tool
- about / Android N Networking ADB tool
- adb shell dumpsys netpolicy / Android N Networking ADB tool
- adb shell cmd netpolicy / Android N Networking ADB tool
- adb shell cmd netpolicy set restrict-background <boolean> / Android N Networking ADB tool
- adb shell cmd netpolicy add restrict-background-whitelist <UID> / Android N Networking ADB tool
- adb shell cmd netpolicy remove restrict-background-whitelist <UID> / Android N Networking ADB tool
- Android runtime (ART)
- about / Runtime, Going deeper into the code
- Android thread messaging
- about / Android thread messaging
- Message objects / Android thread messaging
- Runnable objects / Android thread messaging
- MessageQueue object / Android thread messaging
- Looper object / Android thread messaging
- Handler object / Android thread messaging
- ANR (Application Not Responding)
- about / ANR and delays in software
- triggering / What triggers ANRs and how can I avoid them?
- APK file
- capturing / Capturing an APK file
- file, pulling from device / Pulling a file from the device
- capturing, Wireshark used / Capturing an APK using Wireshark
- external websites, using / Using external websites
- autopsy / Autopsy of an APK file
- APK optimizations
- about / APK optimizations
- unused code, removing / Removing unused code
- unused resources, removing / Removing unused resources
- apktool
- download link / Code injection
- Apple wireless direct link interface (awdl) / Sniffing
- Application.mk file
- about / Application.mk
- APP_OPTIM variable / Application.mk
- APP_CFLAGS variable / Application.mk
- APP_CPPFLAGS variable / Application.mk
- APP_LDFLAGS variable / Application.mk
- APP_PLATFORM variable / Application.mk
- APP_ABI variable / Application.mk
- Application Binary Interface (ABI) / Initial concepts
- application performance
- importance / Why does the performance of an application mean so much to so many?
- manual testing / Manual testing and automatic testing
- automatic testing / Manual testing and automatic testing
- limits / Three limits in application responsiveness
- Application Resource Optimizer (ARO)
- about / Application Resource Optimizer
- data collection / Application Resource Optimizer
- data analysis / Application Resource Optimizer
- App Standby
- about / Doze feature and App Standby
- ArrayAdapter
- about / AdapterViews and view recycling
- ArrayMap object
- about / ArrayMap
- ART memory log
- AsyncTask
- about / AsyncTask
- methods / Methods
- generics parameters / Generics parameters
- states management / States management
- executor / Executor
- using / When to use
- autoboxing
- about / Autoboxing
B
- Battery mode
- best practices
- about / Best practices
- provided layout overview / Provided layout overview
- hierarchical layout management / Hierarchical layout management
- reuse of layouts / Reusing layouts
- ViewStub class / ViewStub
- AdapterViews / AdapterViews and view recycling
- custom views / Custom views and layouts
- custom layouts / Custom views and layouts
- screen zoom / Screen zoom
- best practices, memory
- about / Best practices
- data types / Data types
- syntax / Syntax
- constants / Constants
- object management / Object management
- memory patterns / Memory patterns
- Android components leaks / Android component leaks
- processes / Processes
- memory API / The memory API
- main components / Main components and memory management
- memory management / Main components and memory management
- best practices, multithreading
- about / Best practices
- threads / Threads
- HandlerThread / HandlerThread
- AsyncTask / AsyncTask
- loaders / Loaders
- services / Services
- inter-process communication / Inter-process communication
- advanced techniques / Advanced techniques
- best practices, networking
- about / Best practices
- latency gauging / Latency gauging
- connections, batching / Batching connections
- responses, caching / Caching responses
- exponential back-off / Exponential back-off
- polling, versus pushing / Polling versus pushing
- provided APIs / Provided APIs
- Android N changes / Android N changes
- bitmaps
- about / Bitmaps
- loading / Loading
- processing / Processing
- caching / Caching
- displaying / Displaying
- memory, managing / Managing memory
- Bouncer
- about / Code injection
- Bound Service
- about / Bound Service
- using / When to use
- BroadcastReceiver asynchronous techniques
- BroadcastReceivers
- dealing with / Dealing with BroadcastReceivers on demand
- business value, of software quality / Business value of software quality
C
- cache / Caching
- Camera.ACTION_NEW_PICTURE / Project Svelte and Android N
- Camera.ACTION_NEW_VIDEO / Project Svelte and Android N
- ClassyShark
- about / ClassyShark
- URL / ClassyShark, Getting started
- working with / Getting started
- clients
- about / The object pool pattern
- code
- about / Going deeper into the code
- code improvements
- about / Code improvements
- getters and setters / Getters and setters
- inner classes / Inner classes
- code injections
- about / Code injection
- opcodes / Opcodes
- new code, injecting / Injecting new code
- application, signing / Signing and rebuilding the application
- application, rebuilding / Signing and rebuilding the application
- application, protecting / Protecting our application
- ComponentCallback.onTrimMemory() method
- about / Main components and memory management
- TRIM_MEMORY_RUNNING_MODERATE / Main components and memory management
- TRIM_MEMORY_RUNNING_LOW / Main components and memory management
- TRIM_MEMORY_RUNNING_CRITICAL / Main components and memory management
- TRIM_MEMORY_UI_HIDDEN / Main components and memory management
- TRIM_MEMORY_BACKGROUND / Main components and memory management
- TRIM_MEMORY_MODERATE / Main components and memory management
- TRIM_MEMORY_COMPLETE / Main components and memory management
- connections batching, networking
- about / Batching connections
- prefetching / Prefetching
- connections, queuing / Queuing connections
- connection types, networking
- about / Connection types
- ConnectivityManager.CONNECTIVITY_ACTION / Project Svelte and Android N
- constants
- about / Constants
- content, networking
- ContentProvider asynchronous techniques
- Continuous Integration (CI) systems / Android Debug Bridge
- Crackme
- reference / Autopsy of an APK file
- CursorAdapter
- about / AdapterViews and view recycling
D
- Dalvik
- about / Runtime
- Dalvik Debug Monitor Server (DDMS) / Dalvik Debug Monitor Server
- Dalvik memory log print
- Dalvik virtual machine
- about / Dalvik Virtual Machine
- Dalvik Virtual Machine
- about / Dalvik Virtual Machine
- Data Saver
- about / Data Saver
- data types
- about / Data types
- autoboxing / Autoboxing
- Sparse array family / Sparse array family
- ArrayMap / ArrayMap
- debugging
- Native Development Kit (NDK) / Debugging NDK
- debugging tools
- about / Debugging tools
- Design view / The Design view
- Hierarchy Viewer / Hierarchy Viewer
- on device tools / On device tools
- debugging tools, memory
- about / Debugging tools
- LogCat / LogCat
- ActivityManager API / The ActivityManager API
- StrictMode / StrictMode
- Dumpsys / Dumpsys
- debugging tools, multithreading
- StrictMode / StrictMode
- debugging tools, networking
- Android N Networking ADB tool / Android N Networking ADB tool
- Fiddler / Fiddler
- Wireshark / Wireshark
- Application Resource Optimizer (ARO) / Application Resource Optimizer
- network attenuation / Network attenuation
- speed and delay emulation / Speed and delay emulation
- DecorView / Rendering performance
- default macros, NDK
- my-dir / NDK macros
- parent-makefile / NDK macros
- this-makefile / NDK macros
- Design view
- about / The Design view
- dex2jar
- about / Autopsy of an APK file
- download link / Autopsy of an APK file
- Doze
- Dumpsys
- dx
- about / Dalvik Virtual Machine
E
- emulator control
- about / Emulator Control
- encapsulation
- about / Getters and setters
- encrypted communication
- about / Encrypted communication
- energy consumption
- about / Energy consumption
- Executor object, AsyncTask
- Executors class, AsyncTask
- exponential back-off, networking
- about / Exponential back-off
- ExternalStorage
- about / ExternalStorage
F
- features, Java 8
- default interface methods / Default interface methods
- static interface methods / Static interface methods
- Lambda expression / Lambda expression
- repeating annotations / Repeating annotations
- Fiddler
- FlyWeight pattern
- about / The FlyWeight pattern
- internal state / The FlyWeight pattern
- external state / The FlyWeight pattern
- FlyWeightObjects / The FlyWeight pattern
- FlyWeightFactory / The FlyWeight pattern
- Clients / The FlyWeight pattern
- frame rate
- about / Screen tearing and VSYNC
- framestats / Profile GPU rendering
- free-form mode / Overview
- functional interface / Lambda expression
G
- garbage collection (GC)
- about / Dalvik Virtual Machine
- GcmNetworkManager
- about / GcmNetworkManager
- service implementation / The service implementation
- task scheduling / Task scheduling
- task features / Task features
- GcReason element, ART memory log
- GcReason element, Dalvik memory log print
- generics parameters, AsyncTask
- about / Generics parameters
- Params / Generics parameters
- Progress / Generics parameters
- Result / Generics parameters
- Google Cloud Messaging (GCM)
- about / Understanding Doze
- GPU profiler
- about / GPU profiler
- GPU rendering tool
- about / Profile GPU rendering
- blue bar / Profile GPU rendering
- purple bar / Profile GPU rendering
- red bar / Profile GPU rendering
- orange bar / Profile GPU rendering
- GreenDAO
- about / GreenDAO
H
- HandlerThread
- about / HandlerThread
- using / When to use
- hardware accelerated drawing model
- invalidation / Hardware acceleration
- storing / Hardware acceleration
- redrawing / Hardware acceleration
- heap analysis
- about / Heap analysis and visualization
- HelloWorld-JNI
- creating / Creating our first HelloWorld-JNI
- Hierarchy Viewer
- about / Profiling with Hierarchy Viewer, Hierarchy Viewer
- profiling with / Profiling with Hierarchy Viewer
- Tree View / Tree View
- View properties / View properties
- Tree overview / Tree overview
- Layout View / Layout View
- High-bandwidth Digital Content Protection (HDCP)
- about / Android device debug options
- HPROF / Dalvik Debug Monitor Server
- HTTP Secure
- about / Encrypted communication
I
- image optimization
- about / Image optimization
- resolution / Resolution
- compression / Compression
- images handling, performance tips
- bitmaps / Bitmaps
- industries approach
- TV and theatrical movies / Rendering performance
- slow motion and new movie makers / Rendering performance
- initial concepts, NDK
- about / Initial concepts
- ndk-build / Initial concepts
- Application Binary Interface (ABI) / Initial concepts
- insecure storage
- about / Insecure storage
- SharedPreferences / SharedPreferences
- InternalStorage / InternalStorage
- ExternalStorage / ExternalStorage
- files, deleting / Deleting files
- external storage, using / Using external or internal storage
- internal storage, using / Using external or internal storage
- databases / Databases
- performance improvements, in databases / Performance in databases
- SQL injections / SQL injections
- ORM frameworks / ORM frameworks
- OrmLite / OrmLite
- SugarORM / SugarORM
- GreenDAO / GreenDAO
- Realm / Realm
- network / Network
- IntentService
- about / IntentService
- using / When to use
- inter-process communication
- about / Inter-process communication
- Remote Procedure Call (RPC) / Remote Procedure Call
- Android Interface Definition Language (AIDL) / AIDL
- Messenger / Messenger
- InternalStorage
- about / InternalStorage
J
- Jack toolchain
- about / Jack toolchain
- Java 8, in Android N
- about / Java 8 in Android N
- setup / Setup
- features / Features
- Jack toolchain / Jack toolchain
- Java language
- about / Java language
- Java Native Interface (JNI)
- about / JNI
- Java Virtual Machine (JVM)
- about / Dalvik Virtual Machine, JNI
- JD-GUI
- about / Autopsy of an APK file
- download link / Autopsy of an APK file
- JSON alternatives, serialization
- about / JSON alternatives
- protocol buffer / Protocol buffers
- flat buffers / Flat buffers
- JSON improvements, serialization
- about / JSON improvements
L
- Least Recently Used (LRU) pattern / Services
- LoaderManager class
- initLoader(int id, Bundle args, LoaderCallbacks<D> cb) method / LoaderManager
- restartLoader(int id, Bundle args, LoaderCallbacks<D> cb) method / LoaderManager
- getLoader(int id) method / LoaderManager
- destroyLoader(int id) method / LoaderManager
- loaders
- about / Loaders
- LoaderManager / LoaderManager
- LoaderCallbacks<D> / LoaderCallbacks<D>
- provided loaders / Provided loaders
- using / When to use
- local serialization
- about / Local serialization
- LogCat
M
- macros, NDK
- about / NDK macros
- default macros / NDK macros
- Man-in-the Middle (MITM) / Fiddler
- marshaling
- about / Remote Procedure Call
- Meminfo tool
- about / Meminfo
- memory
- about / Walkthrough
- working / How memory works
- garbage collection / Garbage collection
- shared memory / Shared memory
- runtime / Runtime
- Android N JIT compiler / Android N JIT compiler
- leak / Memory leak
- churn / Memory churn
- references / References
- best practices / Best practices
- debugging tools / Debugging tools
- memory-side projects
- about / Memory-side projects
- Project Butter / Memory-side projects
- Project Svelte / Memory-side projects
- Project Volta / Memory-side projects
- memory API
- about / The memory API
- memory churn
- about / Memory churn
- memory leak
- about / Memory leak
- memory management
- about / Memory management
- memory patterns
- about / Memory patterns
- object pool pattern / The object pool pattern
- FlyWeight pattern / The FlyWeight pattern
- Messenger
- about / Messenger
- metered connection
- about / Data Saver
- methods, AsyncTask
- methods, for executing AsyncTask
- methods, networking
- MSAA (Multi Sample Anti Aliasing) / Android device debug options
- multi-window mode
- about / Multi-window mode
- overview / Overview
- configuration / Configuration
- management / Management
- drag and drop / Drag and drop
- performance impact / Performance impact
- multithreaded / Threading basics
- multithreaded applications
- about / Multithreaded applications
- multithreading
- about / Walkthrough
- basics / Threading basics
- multicore CPUs / Multicore CPUs
- threads, creating / Threads
- Thread class, extending / Threads
- Runnable interface, implementing / Threads
- multithreaded applications / Multithreaded applications
- thread safety / Thread safety
- Android multithreading environment / Android multithreading environment
- Android application thread / Android application thread
- Android thread messaging / Android thread messaging
- best practices / Best practices
- debugging tools / Debugging tools
N
- native activity
- creating, with Android NDK / Creating a native activity with Android NDK
- Native Development Kit (NDK)
- about / Dalvik Virtual Machine
- using / Native Development Kit or how to develop with native code when needed
- setting up, in system / Getting started – setting up NDK in our system
- reference / Getting started – setting up NDK in our system
- initial concepts / Initial concepts
- debugging / Debugging NDK
- variables / More variables in NDK
- macros / NDK macros
- existing libraries, including / Including existing libraries
- header files, exporting / Exporting header files
- ndk-build / Initial concepts
- network attenuation
- about / Network attenuation
- networking
- about / Walkthrough, Networking
- protocols / Protocols
- methods / Methods
- headers / Headers
- timeout / Timeout
- content / Content
- compression / Compression
- response code / Response code
- connection types / Connection types
- best practices / Best practices
- debugging tools / Debugging tools
- network usage
- about / Network usage
O
- obfuscation
- about / Protecting our application
- object management
- about / Object management
- string / Strings
- string concatenation / String concatenation
- local variables / Local variables
- arrays, versus collections / Arrays versus collections
- streams / Streams
- object pool pattern
- about / The object pool pattern
- ReusableObject / The object pool pattern
- Client / The object pool pattern
- ObjectPool / The object pool pattern
- on device tools
- about / On device tools
- GPU overdraw, debugging / Debugging GPU overdraw
- Profile GPU rendering / Profile GPU rendering
- OneoffTask
- about / OneoffTask
- long windowStartDelay / OneoffTask
- long windowEndDelay / OneoffTask
- ORM (object-relational mapping)
- about / ORM frameworks
- ORM frameworks
- about / ORM frameworks
- OrmLite
- overdraw
- about / Overdraw
P
- PeriodicTask
- about / PeriodicTask
- long flex / PeriodicTask
- long period / PeriodicTask
- picture-in-picture mode / Overview
- private storage
- about / InternalStorage
- processes, Android multithreading environment
- ProcStats
- about / ProcStats
- Project Svelte
- Android N / Project Svelte and Android N
- protocols, networking
- provided APIs, networking
- about / Provided APIs
- SyncManager API / SyncManager
- provided loaders
- about / Provided loaders
- AsyncTaskLoader / AsyncTaskLoader
- CursorLoader / CursorLoader
- Proxy
- about / AIDL
- PSS (Proportional Set Size) metric
- about / Meminfo
R
- Realm
- about / Realm
- Received Signal Strength Indication (RSSI)
- about / Android device debug options
- recurring task, multithreading
- Timer class / Timer
- ScheduledExecutorService / ScheduledExecutorService
- AlarmManager / AlarmManager
- reference objects
- normal / References
- soft / References
- weak / References
- Phantom / References
- refresh rate
- about / Screen tearing and VSYNC
- Remote Procedure Call (RPC)
- about / Remote Procedure Call
- Resources.arsc (Application Resource Files) / Autopsy of an APK file
- response caching, networking
- about / Caching responses
- cache control / Cache control
- Last-Modified header / Last-Modified
- If-Modified-Since header / If-Modified-Since
- response code, networking
- about / Response code
S
- screen performance
- about / Walkthrough
- rendering / Rendering performance
- screen tearing
- about / Screen tearing and VSYNC
- serialization
- about / Serialization
- JSON improvements / JSON improvements
- JSON alternatives / JSON alternatives
- local serialization / Local serialization
- Service.onStartCommand() method
- Intent intent parameter / Started Service
- int flags / Started Service
- int startId / Started Service
- START_STICKY / Started Service
- START_NOT_STICKY / Started Service
- START_REDELIVER_INTENT / Started Service
- services
- about / Services
- life cycle / Life cycle
- Started Service / Life cycle
- Bound Service / Life cycle
- SharedPreferences
- about / SharedPreferences
- SimpleAdapter
- about / AdapterViews and view recycling
- sniffing
- about / Sniffing
- software-based drawing model
- invalidation / Hardware acceleration
- redrawing / Hardware acceleration
- Sparse array family
- about / Sparse array family
- compaction / Sparse array family
- resize / Sparse array family
- speed and delay emulation
- about / Speed and delay emulation
- Fiddler / Fiddler
- Network Link Conditioner / Network Link Conditioner
- Network Attenuator / Network Attenuator
- split mode active / Management
- split mode not active / Management
- SQL injections
- about / SQL injections
- Started Service
- about / Started Service
- using / When to use
- StrictMode
- about / StrictMode, StrictMode
- detectActivityLeaks / StrictMode
- detectLeakedClosableObjects / StrictMode
- detectLeakedRegistrationObjects / StrictMode
- detectSqlLiteObjects / StrictMode
- detectAll / StrictMode
- penaltyDeath / StrictMode
- penaltyDropBox / StrictMode
- penaltyLog / StrictMode
- Stub
- about / AIDL
- SugarORM
- SurfaceFlinger
- about / Systrace
- SyncManager API
- about / SyncManager
- Authenticator class / Authenticator
- SyncAdapter class / SyncAdapter
- syntax
- about / Syntax
- collections / Collections
- enumerations / Enumerations
- system status
- about / System status
- SysTrace
- about / Systrace
- Systrace
T
- Task, parameters
- task features, GcmNetworkManager
- about / Task features
- Task / Task
- OneoffTask / OneoffTask
- PeriodicTask / PeriodicTask
- tear points
- about / Screen tearing and VSYNC
- thread information
- capturing / Capturing and analyzing thread information
- analyzing / Capturing and analyzing thread information
- thread safety
- about / Thread safety
- timeouts, networking
- toolchain
- about / Jack toolchain
- trace
- running / Running a trace
- triggers, ANR
U
- UI Thread / What triggers ANRs and how can I avoid them?
- useless network requests
- avoiding / Avoiding useless network requests
- user interface (UI)
- debugging / Debugging the UI
- USS (Unit Set Size)
- about / ProcStats
V
- variables, NDK
- TARGET_PLATFORM / TARGET_PLATFORM
- TARGET_ARCH / TARGET_ARCH
- TARGET_ABI / TARGET_ABI
- View.setLayerType() method
- View.LAYER_TYPE_NONE / Hardware acceleration
- View.LAYER_TYPE_SOFTWARE / Hardware acceleration
- View.LAYER_TYPE_HARDWARE / Hardware acceleration
- ViewGroup class
- LinearLayout / Provided layout overview
- RelativeLayout / Provided layout overview
- FrameLayout / Provided layout overview
- AbsoluteLayout / Provided layout overview
- GridLayout / Provided layout overview
- visibilities, for application
- visible / Main components and memory management
- invisible / Main components and memory management
- visualization / Heap analysis and visualization
- VSYNC (Vertical SYNChronization)
- about / Screen tearing and VSYNC
- hardware acceleration / Hardware acceleration
- overdraw / Overdraw
W
- Wireshark
Z
- Zygote
- about / Memory management, Shared memory