2015-09-03 9 views
1

Я отправляю файлы (до 100Mo на мой андроид), используя Channel Api.Индикатор выполнения при передаче данных

Я решил создать обработчик, чтобы обновить ход передачи, чтобы пользователь знал о прогрессе.

Я использую Message Api, чтобы отправить размер файла в мой обработчик, и я обновляю ход выполнения каждого x миллисекунды размером файла.

Дело в том, что я не знаю сначала, если это хороший способ сделать то, что я хочу, а во-вторых, из-за того, что он асинхронный, мне нужно дождаться, что я правильно получил размер файла в onMessageReceived перед отправкой файла.

ответ

1

Если вы используете ChannelApis, вы можете использовать передачу низкого уровня (используя выходной поток и поток ввода), а затем на стороне отправителя, вы можете обновить индикатор выполнения с суммой, которую вы пишете на выходе поток. Если вы используете метод sendFile(), у вас нет никакого представления о прогрессе на стороне отправителя, поэтому вам нужно сообщить об этом, используя, скажем, Message Apis, как вы это делаете. Вместо этого в x миллисекундах вы можете сделать это немного умнее; если у вас есть размер всего файла, вы, вероятно, не захотите отправить сообщение, если визуальное изменение в строке выполнения не будет значительным или заметным; другими словами, старайтесь максимально сократить количество сообщений.

+0

Я не объяснял, что я делаю: я отправляю сообщение перед передачей файла с его размером, поэтому я могу вызвать таймер на обработанной стороне, чтобы обновить индикатор выполнения каждые x миллисекунд – krakig

Смежные вопросы