Book
  • Introduction
  • Welcome !!
  • Chapter 1: The mobile ecosystem
    • Fragmentation is the devil
    • There is more than one type of mobile app
    • ... more than one type of app
    • ... one type of app
    • Under pressure (ee da de da de) !!
    • Further reading!!
  • Chapter 2: Let's start with design thinking
    • A taste of design thinking
    • The five steps
    • Design for everybody
    • Accessibility in mobile apps
  • Chapter 3: Give me a context and I will give you an app
    • Users
    • Personas? Users ? What is the difference?
    • Please, help me to model the context
    • The context canvas
  • Chapter 4: Powerful models
    • Data architecture is the foundation of analytics
    • From data to information and knowledge
    • Information/Knowledge in our mobile ecosystem
    • Questions to ask yourselves when building and classifying questions
    • The visualization-data map
    • On the scene: describing how personas interact with your app
  • Chapter 5: A GUI is better than two thousand words
    • 'Good to Go:' Let's explore the Design Systems
    • Designing GUI Mocks
    • No prototype... no deal
  • Chapter 6: About mobile operating systems ... and other deamons
    • The Android OS ... son of LINUX
    • iOS son of Darwin? or is it iOS son of UNIX?
    • Kernels
  • Chapter 7: Yes, software architecture matters !!
    • Self-test time
    • About design and design constraints
    • Architects' mojo: styles and patterns
    • What you need is a tactic !!
    • Self-test time 2 (for real)
    • Further reading
  • Chapter 8: Finally... coding
    • MVC, MVVM, MV*, MV...What?
    • Programming models: the Android side
    • Hello Jetpack, my new friend... An Android Jetpack Introduction
    • Programming models: the iOS side
    • Controllers and more controllers
    • Flutter son of... simplicity
    • Programming models: Flutter?
    • Flutter: State matters... Let´s start simple
    • Flutter: State matters... Complex stuff ahead
    • Micro-optimizations
  • Chapter 9: Data pipeline
    • Generalities data pipelines
    • Data storage types
    • Types of data pipelines
  • Chapter 10: Error Retrieving Chapter 10
    • Eventual Connectivity on Mobile Apps
    • How to handle it on Android
  • Chapter 11: The jewel in the crown: Performance
    • As fast as a nail
    • Memory bloats
    • Energy leaks
    • Final thoughts
  • Chapter 12. Become a performance bugs exterminator
    • Weak or strong?
    • Micro-optimizations
    • The single thread game !!
    • Using multi-threading like a boss !!
    • Caching
    • Avoiding memory bloats
    • Further readings
Powered by GitBook
On this page
  1. Chapter 12. Become a performance bugs exterminator

Further readings

PreviousAvoiding memory bloats

Last updated 1 year ago

(By Mario Linares-Vásquez, Laura Bello, Sergio Velásquez, Santiago Cortés, Juan Santiago Acevedo and Juan David Cruz)


As a nice closing for this chapter, we have prepared a list of recommended videos, and recommended libraries that could help you to improve your performance bugs exterminator skills.

Android

The following are videos from the Google Developers YouTube channel:

Also, there are many third-party libraries for Android but several of them are "must have" libraries that are extremely popular and often used in almost any Android project. Some of those major libraries are:

Name
Description

A type-safe REST client for Android which intelligently map an API into a client interface using annotations.

A powerful image downloading and caching library for Android.

Android Parcelable made easy through code generation

Android Instance State made easy

Catch memory leaks in your apps

Powerful DSL for Android integration testing

Efficient unit testing for Android

When using libraries, you must keep in count that Android has some restrictions on its method count (65535 method limit). So, unless you are really going to squeeze the functionalities out of a library, you should not use it and instead build the functionality by yourself.

Let's say we want to load an image in our "Hello World" app using Glide. As with most dependencies, pulling Glide into a Gradle project is a single liner into your build.gradle file:

dependencies {
    ...
    implementation 'com.github.bumptech.glide:glide:4.6.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1'
}

Make sure you use the key "implementation" instead of "compile", which was the rule before Android Studio 3.0.

iOS

Also, there are many libraries that could help you in your project. Here is a list of some important ones:

Name
Description

Is a lightweight REST and JSON library for Swift

Is a really useful library to make loading dialogs.

Lets you know the connectivity state of your phone, you can the internet network status, the wifi status, etc...

A star rating control for iOS

Using Java annotations, makes Android development better by simplifying common tasks. _Might Be replaced by Kotlin Synthetic Variables of _

Memory Performance 101
Garbage Collection in Android
App Launch time 101
Understanding Android Threading
Memory & Threading
Removing unused resources
Perf Theory: Batching
Caching UI data
To Index or Iterate?
Re-using Bitmaps
Battery Drain and Networking
The Performance Lyfecycle
Overdraw
Battery Drain and Wakelocks
Memory Leaks
iOS Memory Deep Dive - WWDC 2018
Optimizing App Assets - WWDC 2018
Images and Graphics Best Practices - WWDC2018
Practical Approaches to Great App Performance - WWDC 2018
Optimizing Your App for Today’s Internet - WWDC 2018
Retrofit
Glide
ButterKnife
Kotlin Extensions
Parceler
IcePick
LeakCanary
Espresso
Robolectric
RestEssentials
MBProgressHUD
Reachability.swift
Cosmos