С HttpClient, когда вы открываете поток ответов следующим образом:
HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
и начинайте чтение, вы фактически начинаете загрузку и получаете новые байты, как только они получены. Вы не ждете, пока все загрузится, чтобы начать читать.
Насколько я знаю, HttpClient в комплекте с Android не основан на NIO. Я не знаю ни одной альтернативы, которая делает это.