Хороший подход к многоэтапной загрузке файлов в Android
Я работаю над куском кода для выполнения POST-запроса данных из нескольких частей, который в моем случае просто загружает изображение на сервер с параметрами. Вот что у меня сейчас:
У меня есть кнопка для запуска многочастного запроса, в кнопке OnClickListener, у меня есть этот код для запуска нового потока:
new Thread(new Runnable(){
@Override
public void run() {
String photoUri = getPhotoUri();
String url = getEndPointUrl();
try {
NewPostRequest.postFile(url, photoUri, <Other Params...>);
} catch (Exception e) {
// Exception Handling
}
}).start();
ИNewPostRequest.postFile
просто используетApache Http Client сделать запрос, в основном, как показано ниже:
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
File file = new File(fileUri);
FileBody fb = new FileBody(file);
builder.addPart("file", fb);
builder.addTextBody("param", otherParam);
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpResponse response = client.execute(post);
Мне нужно крутить новый поток каждый раз, потому что последние выпуски Android не позволяют программе делать http-запросы в потоке пользовательского интерфейса. Однако я действительно против того, чтобы раскручивать случайную нить и выводить ее из-под контроля, как в коде выше. Я пытался использоватьGoogle Volley библиотека, но это не маленький инструмент при загрузке больших файлов данных, таких как изображения.
Мне было интересно, что я должен сделать, чтобы сделать этот звонок более управляемым?
===== ОБНОВЛЕНИЕ =====
Я перешел на использованиеAsyncTask и пока работает нормально. Я буду держать этот вопрос открытым, чтобы увидеть, есть ли у кого-то лучший подход.