#android
#Android
Вопрос:
Я загружаю файл изображения на сервер в Android. Я хочу знать, когда загрузка завершится.Есть ли какой-либо способ узнать это. если в Android есть какое-либо состояние, которое автоматически вызывается при завершении загрузки. Или как проверить это состояние.
Ответ №1:
Если вы используете HttpClient.execute(), это синхронный метод — он возвращается после завершения загрузки.
РЕДАКТИРОВАТЬ: насколько я знаю, на Android нет асинхронного HTTP-клиента. Для неблокирующей загрузки используйте HttpClient — это рабочий поток, и используйте Handler.post(Runnable) для обработки завершения обратно в основной поток.
ПРАВКА 2: асинхронный HTTP выглядит следующим образом:
final Handler Ha = new Handler(); //Used to post the results back to the main thread
new Thread(new Runnable(){
public void run()
{
HttpPost pr = new HttpPost(MyURL);
pr.setEntity(MyUploadData);
//More request setup...
HttpResponse Resp = new DefaultHttpClient().execute(pr);
//Process response here... detect errors, for one thing
Ha.post(new Runnable(){
public void run()
{
//This executes back in the main thread!
}
});
}
}).start();
Комментарии:
1. тогда что такое асинхронный метод, не могли бы вы объяснить, пожалуйста.
2. Я использую HttpClient.execute()
3. Спасибо. Но у меня есть еще одно сомнение, как мы можем узнать, сколько байтов передается каждый раз.
4. @Джеймс: во время загрузки? IIRC вы не можете.