Download-Fortschritt mit RxJava, OkHttp und Okio in Android
In unserer app, die ich laden Sie eine image-Datei mit diesem code. Ich muss den download-Fortschritt(der heruntergeladenen bytes in Prozent) auf UI. Wie bekomme ich den download-Fortschritt in diesem code? Ich suchte für die Lösung, aber immer noch nicht geschafft, es zu tun auf meinem eigenen.
Observable<String> downloadObservable = Observable.create(
sub -> {
Request request = new Request.Builder()
.url(media.getMediaUrl())
.build();
Response response = null;
try {
response = http_client.newCall(request).execute();
if (response.isSuccessful()) {
Log.d(TAG, "response.isSuccessful()");
String mimeType = MimeTypeMap.getFileExtensionFromUrl(media.getMediaUrl());
File file = new File(helper.getTmpFolder() + "/" + helper.generateUniqueName() + "test." + mimeType);
BufferedSink sink = Okio.buffer(Okio.sink(file));
sink.writeAll(response.body().source());
sink.close();
sub.onNext(response.toString());
sub.onCompleted();
} else {
sub.onError(new IOException());
}
} catch (IOException e) {
e.printStackTrace();
}
}
);
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String responseString) {
Log.d(TAG, "works: " + responseString);
}
};
downloadObservable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(mySubscriber);
gefunden gutes Beispiel in Bezug auf meine Frage danosipov.com/?p=678
InformationsquelleAutor Rafael | 2015-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, was ich tun würde, um den Fortschritt anzuzeigen.
Und verwenden Sie die Abonnenten, die das komplette abstrakte Methoden.
Ich aktualisiert meine Antwort, aber ich weiß nicht, Okio, so kann ich nicht sagen, über Sie
Arbeitete wie ein Charme. Ich bin mit retrofit und es wurde immer sehr Komplex, zum download in Form einer einfachen Datei.
wie konnte Sie Zugriff auf die Datei?
Stimme mit @nani der Punkt dieses Beobachten ist die Rückkehr Datei, Fortschritt ist nicht der wichtigste Teil. Ich glaube nicht, dass dies genehmigt werden sollte, zu beantworten
InformationsquelleAutor inmyth