


Exemples de téléchargement de fichiers avec les multithreads RxJava2.x et ReTrofit2.x
Cet article présente principalement l'exemple de code du fichier de téléchargement multithread RxJava2.x+ReTrofit2.x, qui a une certaine valeur de référence. Ceux qui sont intéressés peuvent en apprendre davantage
Écrivez devant. :
Reçu une demande de l'entreprise : faire une fonction de mise à niveau d'apk. Le principe est en fait très simple. Baidu a aussi beaucoup d'exemples, mais la plupart d'entre eux utilisent des frameworks ou HttpURLConnection. je ne veux pas faire ça. Je viens de regarder RxJava2.x+ReTrofit2.x pendant deux jours. On dit que ces deux frameworks sont actuellement les frameworks de requêtes asynchrones les plus populaires. Cet article utilise RxJava2.x+ReTrofit2.x pour implémenter la fonction de téléchargement de fichiers multithread.
Si vous ne savez pas grand chose sur RxJava2.x+ReTrofit2.x, veuillez d'abord lire les documents pertinents.
Maître, s'il vous plaît, ignorez ceci.
Analyse de l'idée :
L'idée est concise et claire, et elle est principalement divisée en quatre étapes suivantes
1 Obtenez le fichier du serveur. size.
2 .Planifiez le nombre de threads en fonction de la taille du fichier.
3. Combinez le contenu téléchargé en un fichier complet.
4. Appelez l'installation et installez l'apk.
La fonction. est implémenté
. Ensuite est votre lien de code favori le plus récent
1. Regardez d'abord la référence
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. Construire une interface de téléchargement DownloadService.class
public interface DownloadService { @Streaming @GET //downParam下载参数,传下载区间使用 //url 下载链接 Observable<ResponseBody> download(@Header("RANGE") String downParam,@Url String url); }
3. Pour faciliter l'utilisation, un RetrofitHelper.class est encapsulé, principalement utilisé pour :
a. ) Instanciez OkHttpClient et Retrofit.
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) Méthode de téléchargement du package J'ai utilisé trois threads de téléchargement pour ce téléchargement, et il n'y a pas d'allocation dynamique. le nombre de fils de discussion en fonction de vos propres besoins
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. Téléchargement d'appel
Remarque : le téléchargement d'appel est effectué dans MainAcitivity Par souci de. Intuition, nous avons encapsulé un intercepteur de progression pour faciliter l'affichage de la progression, mais cet article ne le décrira pas. Le processus de mise en œuvre de l'intercepteur de progression, veuillez laisser un message si nécessaire.
a) Implémentez l'objet d'écoute
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) Appelez le RetrofitHelper encapsulé pour implémenter le téléchargement
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) { } }); }
Remarque : Enfin, publiez une méthode d'installation de l'apk
// 安装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); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le lien magnétique est une méthode de lien pour télécharger des ressources, qui est plus pratique et efficace que les méthodes de téléchargement traditionnelles. Les liens magnétiques vous permettent de télécharger des ressources de manière peer-to-peer sans recourir à un serveur intermédiaire. Cet article explique comment utiliser les liens magnétiques et à quoi il faut prêter attention. 1. Qu'est-ce qu'un lien magnétique ? Un lien magnétique est une méthode de téléchargement basée sur le protocole P2P (Peer-to-Peer). Grâce à des liens magnétiques, les utilisateurs peuvent se connecter directement à l'éditeur de la ressource pour finaliser le partage et le téléchargement des ressources. Par rapport aux méthodes de téléchargement traditionnelles, magnétique

Hongguo Short Play n'est pas seulement une plate-forme pour regarder des pièces courtes, mais aussi un trésor de contenu riche, notamment des romans et d'autres contenus passionnants. C’est sans aucun doute une énorme surprise pour de nombreux utilisateurs qui aiment lire. Cependant, de nombreux utilisateurs ne savent toujours pas comment télécharger et regarder ces romans dans Hongguo Short Play. Dans ce qui suit, l'éditeur de ce site vous fournira des étapes de téléchargement détaillées, dans l'espoir d'aider tous les partenaires dans le besoin. Comment télécharger et regarder la pièce courte de Hongguo ? Réponse : [Pièce courte de Hongguo] - [Livre audio] - [Article] - [Télécharger]. Étapes spécifiques : 1. Ouvrez d'abord le logiciel Hongguo Short Drama, entrez dans la page d'accueil et cliquez sur le bouton [Écouter les livres] en haut de la page. 2. Ensuite, sur la page du roman, nous pouvons voir de nombreux contenus d'articles, ici ;

Lorsque vous vous connectez au compte Steam de quelqu'un d'autre sur votre ordinateur et que le compte de cette autre personne dispose d'un logiciel de fond d'écran, Steam téléchargera automatiquement les fonds d'écran abonnés au compte de l'autre personne après être revenu à votre propre compte. Les utilisateurs peuvent résoudre ce problème en. désactiver la synchronisation du cloud Steam. Que faire si WallpaperEngine télécharge les fonds d'écran d'autres personnes après s'être connecté à un autre compte 1. Connectez-vous à votre propre compte Steam, recherchez la synchronisation cloud dans les paramètres et désactivez la synchronisation cloud Steam. 2. Connectez-vous au compte Steam de quelqu'un d'autre auquel vous vous êtes connecté auparavant, ouvrez Wallpaper Creative Workshop, recherchez le contenu de l'abonnement, puis annulez tous les abonnements. (Si vous ne trouvez pas le fond d'écran à l'avenir, vous pouvez d'abord le récupérer, puis annuler l'abonnement) 3. Revenez à votre propre Steam

Récemment, de nombreux utilisateurs ont demandé à l'éditeur comment télécharger des liens commençant par 115:// ? Si vous souhaitez télécharger des liens commençant par 115://, vous devez utiliser le navigateur 115. Après avoir téléchargé le navigateur 115, jetons un œil au didacticiel de téléchargement compilé par l'éditeur ci-dessous. Introduction à la façon de télécharger des liens commençant par 115:// 1. Connectez-vous à 115.com, téléchargez et installez le navigateur 115. 2. Saisissez : chrome://extensions/ dans la barre d'adresse du navigateur 115, entrez dans le centre d'extensions, recherchez Tampermonkey et installez le plug-in correspondant. 3. Saisissez dans la barre d'adresse du navigateur 115 : Grease Monkey Script : https://greasyfork.org/en/

Le disque cloud 123 peut télécharger de nombreux fichiers, alors comment télécharger des fichiers spécifiquement ? Les utilisateurs peuvent sélectionner le fichier qu'ils souhaitent télécharger et cliquer pour télécharger, ou cliquer avec le bouton droit sur le fichier et sélectionner télécharger. Cette introduction à la méthode de téléchargement de fichiers à partir du disque cloud 123 peut vous expliquer comment le télécharger. Les amis qui n'y connaissent pas grand-chose devraient se dépêcher et y jeter un œil ! Comment télécharger des fichiers à partir de 123 Cloud Disk 1. Ouvrez d'abord le logiciel, cliquez sur le logiciel qui doit être téléchargé, puis il y aura un bouton de téléchargement dessus. 2. Ou cliquez avec le bouton droit sur le logiciel et vous pourrez voir le bouton de téléchargement dans la liste. 3. Il y aura une fenêtre de téléchargement, sélectionnez l'emplacement que vous souhaitez télécharger. 4. Après la sélection, cliquez sur Télécharger pour télécharger ces fichiers.

Le jeu superpeople peut être téléchargé via le client Steam. La taille de ce jeu est d'environ 28 Go. Le téléchargement et l'installation prennent généralement une heure et demie. Voici un tutoriel de téléchargement et d'installation spécifique pour vous ! Nouvelle méthode pour postuler aux tests fermés globaux 1) Recherchez "SUPERPEOPLE" dans la boutique Steam (téléchargement du client Steam) 2) Cliquez sur "Demander l'accès aux tests fermés SUPERPEOPLE" en bas de la page de la boutique "SUPERPEOPLE" 3) Après avoir cliqué sur le bouton de demande d'accès, le jeu "SUPERPEOPLECBT" peut être confirmé dans la bibliothèque Steam 4) Cliquez sur le bouton d'installation dans "SUPERPEOPLECBT" et téléchargez

Aujourd'hui, de plus en plus de personnes commencent à jouer aux comptes vidéo. Les comptes vidéo sont également une courte plateforme vidéo sur laquelle ils peuvent partager leur vie quotidienne et gagner de l'argent grâce aux comptes vidéo. Récemment, j'ai vu des amis demander pourquoi les vidéos du compte vidéo WeChat n'étaient pas téléchargées. Yang Shuaikang est allé l'essayer et a découvert qu'il n'y avait effectivement pas de bouton de téléchargement, il a donc dû utiliser d'autres méthodes pour extraire les vidéos. partagera avec vous une méthode stupide, venez jeter un oeil. Comment extraire des vidéos des comptes vidéo WeChat 1. Ouvrez notre version informatique de WeChat et recherchez [Compte vidéo] sur la gauche ; 2. Recherchez la vidéo que vous souhaitez télécharger via la recherche 3. Enfin, utilisez l'outil d'enregistrement d'écran pour ajuster le paramètre ; taille de la vidéo enregistrée. Enregistrez-la et éditez-la à la fin. PS : 1. Cette méthode ne peut être enregistrée que sur la version ordinateur, pas sur le téléphone mobile.

De nombreux utilisateurs ont besoin de télécharger des fichiers lorsqu'ils utilisent Quark Network Disk, mais nous souhaitons les enregistrer localement, alors comment configurer cela ? Laissez ce site présenter aux utilisateurs en détail comment enregistrer les fichiers téléchargés à partir de Quark Network Disk sur l'ordinateur local. Comment enregistrer les fichiers téléchargés depuis le disque réseau Quark sur votre ordinateur local 1. Ouvrez Quark, connectez-vous à votre compte et cliquez sur l'icône de liste. 2. Après avoir cliqué sur l'icône, sélectionnez le disque réseau. 3. Après avoir accédé à Quark Network Disk, cliquez sur Mes fichiers. 4. Après avoir accédé à Mes fichiers, sélectionnez le fichier que vous souhaitez télécharger et cliquez sur l'icône à trois points. 5. Cochez le fichier que vous souhaitez télécharger et cliquez sur Télécharger.
