Android high performance programming build fast and efficient Android apps that run as reliably as clockwork in a multi-device world

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

Full description

Bibliographic Details
Main Author: López Mañaz, Enrique
Format: eBook
Language:English
Published: Birmingham Packt Publishing 2016
Series:Community experience distilled
Subjects:
Online Access:
Collection: O'Reilly - Collection details see MPG.ReNa
LEADER 10057nmm a2200409 u 4500
001 EB001908569
003 EBX01000000000000001071471
005 00000000000000.0
007 cr|||||||||||||||||||||
008 210123 ||| eng
020 |a 9781785283383 
020 |a 1785283383 
020 |a 1785288954 
050 4 |a QA76.774.A53 
100 1 |a López Mañaz, Enrique 
245 0 0 |a Android high performance programming  |b build fast and efficient Android apps that run as reliably as clockwork in a multi-device world  |c Enrique López Mañas, Diego Grancini 
260 |a Birmingham  |b Packt Publishing  |c 2016 
300 |a 1 online resource  |b illustrations 
505 0 |a Cover -- Copyright -- Credits -- About the Authors -- About the Reviewer -- www.PacktPub.com -- Table of Contents -- Preface -- Chapter 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 -- Chapter 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 -- Chapter 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 -- Chapter 4: Memory -- Walkthrough -- How memory works -- Garbage collection -- Shared memory -- Runtime 
505 0 |a Exporting header files -- Summary -- Chapter 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 
505 0 |a 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 -- Services -- Processes -- The memory API -- Main components and memory management -- Debugging tools -- LogCat -- Dalvik -- ART -- The ActivityManager API -- StrictMode -- Dumpsys -- Meminfo -- ProcStats -- Summary -- Chapter 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&lt -- D&gt -- Provided loaders -- When to use -- Services -- Life cycle -- Started Service -- Bound Service -- IntentService -- Inter-process communication -- Remote Procedure Call -- AIDL -- Messenger -- Advanced techniques -- BroadcastReceiver asynchronous techniques -- ContentProvider asynchronous techniques -- Repeating tasks -- Debugging tools -- StrictMode -- Summary -- Chapter 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 
505 0 |a Last-Modified -- If-Modified-Since -- Exponential back-off -- Polling versus pushing -- Provided APIs -- SyncManager -- Android N changes -- Data Saver -- Background optimization -- GcmNetworkManager -- 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 -- Chapter 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 -- Chapter 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 -- Chapter 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 
653 |a Android (Electronic resource) / fast 
653 |a COMPUTERS / Programming / Mobile Devices / bisacsh 
653 |a Android (Electronic resource) / http://id.loc.gov/authorities/names/n2009043077 
041 0 7 |a eng  |2 ISO 639-2 
989 |b OREILLY  |a O'Reilly 
490 0 |a Community experience distilled 
500 |a Includes index 
776 |z 1785283383 
776 |z 9781785288951 
776 |z 9781785283383 
856 4 0 |u https://learning.oreilly.com/library/view/~/9781785288951/?ar  |x Verlag  |3 Volltext 
082 0 |a 005.25 
520 |a 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 explai.. 
520 |a 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.  
520 |a 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.