Heim Java javaLernprogramm Beispiele für das Herunterladen von Dateien mit RxJava2.x- und ReTrofit2.x-Multithreads

Beispiele für das Herunterladen von Dateien mit RxJava2.x- und ReTrofit2.x-Multithreads

Sep 19, 2017 am 09:52 AM
下载

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'
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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();
  }
Nach dem Login kopieren

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());
  }
Nach dem Login kopieren

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) {

      }
    };
Nach dem Login kopieren

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) {

      }
    });

  }
Nach dem Login kopieren

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);
  }
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Magnetlinks So verwenden Sie Magnetlinks Feb 18, 2024 am 10:02 AM

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

So laden Sie Episoden des Hongguo-Kurzdramas herunter So laden Sie Episoden des Hongguo-Kurzdramas herunter Mar 11, 2024 pm 09:16 PM

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

Was soll ich tun, wenn ich das Hintergrundbild einer anderen Person herunterlade, nachdem ich mich bei WallpaperEngine bei einem anderen Konto angemeldet habe? Was soll ich tun, wenn ich das Hintergrundbild einer anderen Person herunterlade, nachdem ich mich bei WallpaperEngine bei einem anderen Konto angemeldet habe? Mar 19, 2024 pm 02:00 PM

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

Wie lade ich Links herunter, die mit 115:// beginnen? Methodeneinführung herunterladen Wie lade ich Links herunter, die mit 115:// beginnen? Methodeneinführung herunterladen Mar 14, 2024 am 11:58 AM

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/

So laden Sie Dateien von der 123-Cloud-Festplatte herunter So laden Sie Dateien von der 123-Cloud-Festplatte herunter Feb 23, 2024 pm 08:58 PM

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.

Einführung in das Herunterladen und Installieren des Superpeople-Spiels Einführung in das Herunterladen und Installieren des Superpeople-Spiels Mar 30, 2024 pm 04:01 PM

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

So laden Sie Videos von einem Videokonto herunter „Muss man gesehen haben: Eine einfache Möglichkeit, Videos von einem Videokonto zu speichern' So laden Sie Videos von einem Videokonto herunter „Muss man gesehen haben: Eine einfache Möglichkeit, Videos von einem Videokonto zu speichern' Feb 06, 2024 pm 06:42 PM

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.

Wie lade ich eine Quark-Netzwerkfestplatte lokal herunter? So speichern Sie von Quark Network Disk heruntergeladene Dateien wieder auf dem lokalen Computer Wie lade ich eine Quark-Netzwerkfestplatte lokal herunter? So speichern Sie von Quark Network Disk heruntergeladene Dateien wieder auf dem lokalen Computer Mar 13, 2024 pm 08:31 PM

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.

See all articles