


Beispiele für das Herunterladen von Dateien mit RxJava2.x- und ReTrofit2.x-Multithreads
In diesem Artikel wird hauptsächlich der Beispielcode der Multithread-Downloaddatei RxJava2.x+ReTrofit2.x vorgestellt, der einen gewissen Referenzwert hat.
Schreiben Sie vor :
Ich habe eine Anfrage von der Firma erhalten, eine APK-Upgrade-Funktion zu erstellen. Das Prinzip ist eigentlich auch sehr einfach, aber die meisten davon verwenden Frameworks oder HttpURLConnection Ich möchte das nicht tun. Ich habe mir gerade zwei Tage lang RxJava2.x+ReTrofit2.x angesehen. Es wird gesagt, dass diese beiden Frameworks derzeit die beliebtesten asynchronen Anforderungsframeworks sind. In diesem Artikel wird RxJava2.x + ReTrofit2.x verwendet, um die Funktion zum Herunterladen von Dateien mit mehreren Threads zu implementieren.
Wenn Sie nicht viel über RxJava2.x+ReTrofit2.x wissen, lesen Sie bitte zuerst die relevanten Dokumente.
Meister, bitte ignorieren Sie das.
Ideenanalyse:
Die Idee ist prägnant und klar und gliedert sich hauptsächlich in die folgenden vier Schritte
1. Holen Sie sich die Serverdatei Größe.
2 .Planen Sie die Anzahl der Threads entsprechend der Dateigröße.
3. Kombinieren Sie den heruntergeladenen Inhalt zu einer vollständigen Datei.
4. Rufen Sie die Installation auf und installieren Sie die APK.
Die Funktion ist implementiert
. Als nächstes folgt Ihr aktueller Lieblingscode-Link
1. Schauen Sie sich zuerst die Referenz an
compile 'io.reactivex:rxjava:latest.release' compile 'io.reactivex:rxandroid:latest.release' //network - squareup compile 'com.squareup.retrofit2:retrofit:latest.release' compile 'com.squareup.retrofit2:adapter-rxjava:latest.release' compile 'com.squareup.okhttp3:okhttp:latest.release' compile 'com.squareup.okhttp3:logging-interceptor:latest.release'
2. Erstellen Sie eine Download-Schnittstelle DownloadService.class
public interface DownloadService { @Streaming @GET //downParam下载参数,传下载区间使用 //url 下载链接 Observable<ResponseBody> download(@Header("RANGE") String downParam,@Url String url); }
3. Zur Benutzerfreundlichkeit ist eine RetrofitHelper.class gekapselt, die hauptsächlich für Folgendes verwendet wird:
a ) OkHttpClient instanziieren und nachrüsten.
public RetrofitHelper(String url, DownloadProgressListener listener) { DownloadProgressInterceptor interceptor = new DownloadProgressInterceptor(listener); OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(interceptor) .retryOnConnectionFailure(true) .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) .build(); retrofit = new Retrofit.Builder() .baseUrl(url) .client(client) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); }
b) Ich habe für diesen Download drei Download-Threads verwendet, und es gibt keine dynamische Zuordnung die Anzahl der Threads entsprechend Ihren eigenen Bedürfnissen
public Observable download(@NonNull final long start, @NonNull final long end, @NonNull final String url, final File file, final Subscriber subscriber) { String str = ""; if (end == -1) { str = ""; } else { str = end + ""; } return retrofit.create(DownloadService.class).download("bytes=" + start + "-" + str, url).subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).map(new Func1<ResponseBody, ResponseBody>() { @Override public ResponseBody call(ResponseBody responseBody) { return responseBody; } }).observeOn(Schedulers.computation()).doOnNext(new Action1<ResponseBody>() { @Override public void call(ResponseBody responseBody) { //第一次请求全部文件长度 if (end == -1) { try { RandomAccessFile randomFile = new RandomAccessFile(file, "rw"); randomFile.setLength(responseBody.contentLength()); long one = responseBody.contentLength() / 3; download(0, one, url, file, subscriber).mergeWith(download(one, one * 2, url, file, subscriber)).mergeWith(download(one * 2, responseBody.contentLength(), url, file, subscriber)).subscribe(subscriber); } catch (IOException e) { e.printStackTrace(); } } else { FileUtils fileUtils = new FileUtils(); fileUtils.writeFile(start, end, responseBody.byteStream(), file); } } }).subscribeOn(AndroidSchedulers.mainThread()); }
4. Anruf-Download
Hinweis: Der Anruf-Download wird in MainAcitivity durchgeführt Intuitiv haben wir einen Fortschritts-Interceptor gekapselt, um die Fortschrittsanzeige zu erleichtern, aber dieser Artikel wird den Implementierungsprozess des Fortschritts-Interceptors nicht beschreiben. Bitte hinterlassen Sie bei Bedarf eine Nachricht.
a) Implementieren Sie das Abhörobjekt
subscriber = new Subscriber() { @Override public void onCompleted() { Log.e("MainActivity", "onCompleted下下载完成"); // Toast.makeText(MainActivity.this, "onCompleted下下载完成", Toast.LENGTH_LONG).show(); installAPK("mnt/sdcard/aaaaaaaaa.apk"); } @Override public void onError(Throwable e) { e.printStackTrace(); Log.e("MainActivity", "onError: " + e.getMessage()); } @Override public void onNext(Object o) { } };
b) Rufen Sie den gekapselten RetrofitHelper auf, um den Download zu implementieren
RetrofitHelper RetrofitHelper = new RetrofitHelper("http://gdown.baidu.com/data/wisegame/0904344dee4a2d92/", new DownloadProgressListener() { @Override public void update(long bytesRead, long contentLength, boolean done) { SharedPF.getSharder().setLong("update", bytesRead); pro.setProgress((int) ((double) bytesRead / contentLength * 100)); temp++; if (temp <= 1) { Log.e("MainActivity", "update" + bytesRead + ""); } } }); RetrofitHelper.download(0, -1, "QQ_718.apk", new File("mnt/sdcard/", "aaaaaaaaa.apk"), subscriber).subscribe(new Subscriber() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Object o) { } }); }
Hinweis: Veröffentlichen Sie abschließend eine APK-Installationsmethode
// 安装APK public void installAPK(String filePath) { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 广播里面操作需要加上这句,存在于一个独立的栈里 intent.setDataAndType(Uri.fromFile(new File(filePath)), "application/vnd.android.package-archive"); mainActivity.startActivity(intent); }
Das obige ist der detaillierte Inhalt vonBeispiele für das Herunterladen von Dateien mit RxJava2.x- und ReTrofit2.x-Multithreads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Magnet-Link ist eine Link-Methode zum Herunterladen von Ressourcen, die bequemer und effizienter ist als herkömmliche Download-Methoden. Mit Magnet-Links können Sie Ressourcen im Peer-to-Peer-Verfahren herunterladen, ohne auf einen Zwischenserver angewiesen zu sein. In diesem Artikel erfahren Sie, wie Sie Magnetlinks verwenden und worauf Sie achten sollten. 1. Was ist ein Magnet-Link? Ein Magnet-Link ist eine Download-Methode, die auf dem P2P-Protokoll (Peer-to-Peer) basiert. Über Magnet-Links können Benutzer eine direkte Verbindung zum Herausgeber der Ressource herstellen, um die gemeinsame Nutzung und das Herunterladen von Ressourcen abzuschließen. Im Vergleich zu herkömmlichen Download-Methoden magnetisch

Hongguo Short Play ist nicht nur eine Plattform zum Ansehen von Kurzstücken, sondern auch eine Fundgrube an reichhaltigen Inhalten, darunter Romane und andere spannende Inhalte. Für viele lesebegeisterte Nutzer ist das zweifellos eine große Überraschung. Viele Benutzer wissen jedoch immer noch nicht, wie sie diese Romane in Hongguo Short Play herunterladen und ansehen können. Im Folgenden stellt Ihnen der Herausgeber dieser Website detaillierte Download-Schritte vor, in der Hoffnung, allen bedürftigen Partnern zu helfen. Wie kann ich das Hongguo-Kurzspiel herunterladen und ansehen? Antwort: [Hongguo-Kurzspiel] – [Hörbuch] – [Artikel] – [Download]. Spezifische Schritte: 1. Öffnen Sie zuerst die Hongguo Short Drama-Software, rufen Sie die Startseite auf und klicken Sie oben auf der Seite auf die Schaltfläche [Bücher anhören]. 2. Dann können wir hier auf der Romanseite viele Artikelinhalte sehen

Wenn Sie sich auf Ihrem Computer beim Steam-Konto einer anderen Person anmelden und das Konto dieser anderen Person über eine Hintergrundsoftware verfügt, lädt Steam automatisch die Hintergrundbilder herunter, die für das Konto der anderen Person abonniert wurden, nachdem Sie zu Ihrem eigenen Konto zurückgewechselt haben Deaktivieren der Steam-Cloud-Synchronisierung. Was tun, wenn WallpaperEngine die Hintergrundbilder anderer Personen herunterlädt, nachdem Sie sich bei einem anderen Konto angemeldet haben? 1. Melden Sie sich bei Ihrem eigenen Steam-Konto an, suchen Sie in den Einstellungen nach der Cloud-Synchronisierung und deaktivieren Sie die Steam-Cloud-Synchronisierung. 2. Melden Sie sich bei dem Steam-Konto einer anderen Person an, bei dem Sie sich zuvor angemeldet haben, öffnen Sie den Wallpaper Creative Workshop, suchen Sie nach den Abonnementinhalten und kündigen Sie dann alle Abonnements. (Falls Sie das Hintergrundbild in Zukunft nicht mehr finden, können Sie es zunächst abholen und dann das Abonnement kündigen.) 3. Wechseln Sie zurück zu Ihrem eigenen Steam

In letzter Zeit haben viele Benutzer den Editor gefragt, wie man Links herunterlädt, die mit 115:// beginnen? Wenn Sie Links herunterladen möchten, die mit 115:// beginnen, müssen Sie den 115-Browser verwenden. Nachdem Sie den 115-Browser heruntergeladen haben, schauen wir uns das unten vom Herausgeber zusammengestellte Download-Tutorial an. Einführung zum Herunterladen von Links, die mit 115:// beginnen. 1. Melden Sie sich bei 115.com an, laden Sie den 115-Browser herunter und installieren Sie ihn. 2. Geben Sie Folgendes ein: chrome://extensions/ in die Adressleiste des 115-Browsers, rufen Sie das Extension Center auf, suchen Sie nach Tampermonkey und installieren Sie das entsprechende Plug-in. 3. Geben Sie in die Adressleiste des Browsers 115 ein: Grease Monkey Script: https://greasyfork.org/en/

123 Cloud Disk kann viele Dateien herunterladen. Wie lade ich Dateien konkret herunter? Benutzer können die Datei auswählen, die sie herunterladen möchten, und zum Herunterladen klicken, oder mit der rechten Maustaste auf die Datei klicken und „Herunterladen“ auswählen. In dieser Einführung in die Methode zum Herunterladen von Dateien von der 123-Cloud-Festplatte erfahren Sie, wie Sie sie herunterladen. Freunde, die nicht viel darüber wissen, sollten sich beeilen und einen Blick darauf werfen! So laden Sie Dateien von 123 Cloud Disk herunter 1. Öffnen Sie zuerst die Software, klicken Sie auf die Software, die heruntergeladen werden muss, und dann wird darauf ein Download-Button angezeigt. 2. Oder klicken Sie mit der rechten Maustaste auf die Software und Sie können die Download-Schaltfläche in der Liste sehen. 3. Es erscheint ein Download-Fenster. Wählen Sie den Speicherort aus, den Sie herunterladen möchten. 4. Klicken Sie nach der Auswahl auf „Herunterladen“, um diese Dateien herunterzuladen.

Das Superpeople-Spiel kann über den Steam-Client heruntergeladen werden. Die Größe dieses Spiels beträgt normalerweise eineinhalb Stunden. Hier ist ein spezielles Download- und Installations-Tutorial. Neue Methode zur Beantragung globaler geschlossener Tests 1) Suchen Sie nach „SUPERPEOPLE“ im Steam-Store (Steam-Client-Download) 2) Klicken Sie unten auf der „SUPERPEOPLE“-Store-Seite auf „Zugriff auf geschlossene SUPERPEOPLE-Tests anfordern“ 3) Nachdem Sie auf geklickt haben Schaltfläche „Zugriff anfordern“. Das Spiel „SUPERPEOPLECBT“ kann in der Steam-Bibliothek bestätigt werden. 4) Klicken Sie auf die Schaltfläche „Installieren“ in „SUPERPEOPLECBT“ und laden Sie es herunter

Jetzt fangen immer mehr Menschen an, Videokonten zu nutzen, die auch eine kurze Videoplattform sind, auf der sie ihr tägliches Leben teilen und mit Videokonten Geld verdienen können. Kürzlich sah ich, wie einige Freunde fragten, warum die Videos vom WeChat-Videokonto nicht heruntergeladen wurden, und es gab tatsächlich keinen Download-Button, sodass er das Video nur auf andere Weise extrahieren konnte mit dir eine dumme Methode, komm und schau es dir an. So extrahieren Sie Videos aus WeChat-Videokonten 1. Öffnen Sie unsere Computerversion von WeChat und suchen Sie auf der linken Seite nach dem Videokonto, das Sie herunterladen möchten. 3. Verwenden Sie abschließend das Bildschirmaufzeichnungstool, um es anzupassen Größe des aufgenommenen Videos. Nehmen Sie es einfach auf und bearbeiten Sie es am Ende. PS: 1. Diese Methode kann nur auf der Computerversion aufgezeichnet werden, nicht auf dem Mobiltelefon.

Viele Benutzer müssen Dateien herunterladen, wenn sie Quark Network Disk verwenden, aber wir möchten sie lokal speichern. Wie richtet man das also ein? Auf dieser Website erfahren Sie ausführlich, wie Sie von Quark Network Disk heruntergeladene Dateien wieder auf dem lokalen Computer speichern. So speichern Sie von der Quark-Netzwerkfestplatte heruntergeladene Dateien wieder auf Ihrem lokalen Computer 1. Öffnen Sie Quark, melden Sie sich bei Ihrem Konto an und klicken Sie auf das Listensymbol. 2. Nachdem Sie auf das Symbol geklickt haben, wählen Sie das Netzwerklaufwerk aus. 3. Nachdem Sie Quark Network Disk aufgerufen haben, klicken Sie auf „Meine Dateien“. 4. Nachdem Sie „Meine Dateien“ aufgerufen haben, wählen Sie die Datei aus, die Sie herunterladen möchten, und klicken Sie auf das Dreipunktsymbol. 5. Markieren Sie die Datei, die Sie herunterladen möchten, und klicken Sie auf Herunterladen.
