This document discusses reactive programming and multi-threading in Android. It introduces the need for threads to avoid UI blocking. It then discusses common threading problems like progress updates and dependencies. It presents solutions from Google like AsyncTask and Handler/Looper as well as Java utilities. It also discusses deferred-promise patterns from libraries like Bolts and RxJava concepts like explicit execution and cancellation. It advocates for RxJava as a way to more easily manage threads and transformations with fewer side effects.