Обнаружение завершения загрузки

#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 вы не можете.