Ion - Android networking made easy

I've been working on a NIO based http library for a while, and really needed to wrap it up into a easy to use API. Ion is the end result.

Writing http code is a chore- as a developer, you need to manage entirely too much boilerplate (threading, caching, compression, parsing, error handling, etc) to make efficient and reliable (non-crashy) requests. Ion will manage much of that for you,


The high level goals:
 * Thread management should be transparent (no threads!)
 * All operations return futures which are cancellable
 * Activity lifecycle management should be seamless

Features

Asynchronously download:
 * Images (into ImageViews or Bitmaps)
 * JSON (via Gson)
 * Strings
 * Files
 * Java types using Gson
Easy to use Builder API designed for Android
 * Automatically cancels operations when the calling Activity finishes
 * Manages invocation back onto the UI thread
 * All operations return a Future and can be cancelled
HTTP POST/PUT:
 * text/plain
 * application/json
 * application/x-www-form-urlencoded
 * multipart/form-data
Transparent usage of HTTP features and optimizations:
 * Caching
 * Gzip/Deflate Compression
 * Connection pooling/reuse via HTTP Connection: keep-alive
 * Uses the best/stablest connection from a server if it has multiple IP addresses
 * Cookies
Grouping and cancellation of requests
Download progress callbacks
Supports file:/, http(s):/, and content:/ URIs
Request level logging and profiling
Support for proxy servers like Charles Proxy to do request analysis
Based on NIO and AndroidAsync
Shared publiclyView activity