I publish file upload progress via NotificationManager, but while updating its progress UI freezes.
I use NotificationCompat.Builder, which cached in the class field. So progress publishing is a very simple:
manager.notify(id, uploader.
setProgress(MAX_PROGRESS, (int) (progress * 100), false).
build()
);
Update progress is guaranteed to execute from the main thread(wrapped in Handler decorator).
this.request.setCallback(new UploaderDecorator(this.request.getCallback()));
The very publication of progress is as follows:
long total = file.length();
long uploaded = 0;
int bytesRead = input.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
output.write(buffer, 0, bufferSize);
uploaded += bytesRead;
callback.onUploadProgress(activeFile, ((float) uploaded / total));
bytesRead = input.read(buffer, 0, bufferSize);
}
So why it's works so slow?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…