日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 模拟多线程下载

發布時間:2025/5/22 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 模拟多线程下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?以下是一個多線程下載的例子,見代碼:

1、首先是布局文件

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent"> 5 6 7 <Button 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:text="下載" 11 android:id="@+id/btnDownLoad" /> 12 13 <TextView 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:text="New Text" 17 android:id="@+id/tv" 18 android:layout_gravity="center_vertical" /> 19 </LinearLayout>

  2、然后是對應的Activity文件

1 import android.app.Activity; 2 import android.os.Handler; 3 import android.os.Message; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.Button; 7 import android.widget.TextView; 8 9 import com.yt.httpstudy.util.Download; 10 11 12 public class DownLoadActivity extends Activity { 13 private Button btnDown; 14 private TextView textView; 15 private int count = 0; 16 private Handler handler = new Handler(){ 17 //接收信息并且處理 18 public void handleMessage(Message message){ 19 int result = message.what; 20 count += result; 21 if(count ==3){ 22 //下載完成后刷新頁面 23 textView.setText("下載完成!"+count); 24 } 25 } 26 }; 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.activity_down_load); 31 btnDown = (Button) findViewById(R.id.btnDownLoad); 32 textView = (TextView) findViewById(R.id.tv); 33 34 btnDown.setOnClickListener(new View.OnClickListener() { 35 @Override 36 public void onClick(View view) { 37 38 new Thread(){ 39 @Override 40 public void run() { 41 super.run(); 42 Download download = new Download(handler); 43 //下載資源的地址 44 download.downLoadFile("http://192.168.1.123:8080/test/asd.jpg"); 45 } 46 }.start(); 47 } 48 }); 49 } 50 }

? ? ?3、處理多線程下載

1 import android.os.Environment; 2 import android.os.Handler; 3 import android.os.Message; 4 5 import java.io.File; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.RandomAccessFile; 9 import java.net.HttpURLConnection; 10 import java.net.MalformedURLException; 11 import java.net.URL; 12 import java.util.concurrent.Executor; 13 import java.util.concurrent.Executors; 14 15 /** 16 * Created by 17 */ 18 public class Download { 19 20 21 public Handler handler; 22 //創建線程池 23 private Executor threadPool = Executors.newFixedThreadPool(3); 24 25 //構造器 26 public Download(Handler handler){ 27 this.handler = handler; 28 } 29 30 //線程池對象 31 static class DownLoadRunnable implements Runnable{ 32 //指定成員變量 33 private String url; 34 private String fileName; 35 private long start,end; 36 private Handler handler; 37 38 public DownLoadRunnable(String url,String fileName,long start,long end,Handler handler){ 39 this.url = url; 40 this.fileName = fileName; 41 this.start = start; 42 this.end = end; 43 this.handler = handler; 44 45 } 46 @Override 47 public void run() { 48 49 HttpURLConnection conn = null; 50 try { 51 URL httpUrl = new URL(url); 52 conn = (HttpURLConnection) httpUrl.openConnection(); 53 conn.setRequestProperty("Range", "bytes=" + start + "-" + end); 54 conn.setRequestMethod("GET"); 55 conn.setReadTimeout(5000); 56 57 //往本地寫文件 58 RandomAccessFile access = new RandomAccessFile(new File(fileName),"rwd"); 59 access.seek(start); 60 //讀取數據流 61 InputStream in = conn.getInputStream(); 62 63 //創建緩沖區 64 byte[] b = new byte[1024*4]; 65 int len = 0; 66 while ((len = in.read(b)) !=-1){ 67 access.write(b,0,len); 68 } 69 if(access !=null){ 70 access.close(); 71 } 72 if(in !=null){ 73 in.close(); 74 } 75 76 //發送消息 77 Message message = new Message(); 78 message.what =1; 79 handler.sendMessage(message); 80 } catch (IOException e) { 81 e.printStackTrace(); 82 } 83 84 } 85 } 86 87 public void downLoadFile(String url){ 88 try { 89 URL httpUrl = new URL(url); 90 HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection(); 91 conn.setRequestMethod("GET"); 92 conn.setReadTimeout(5000); 93 94 //獲取下載內容長度 95 int count = conn.getContentLength(); 96 int bloack = count/3; 97 98 //獲取文件名 99 String fileName = getFileName(url); 100 101 //獲取外部設備名稱 102 File parent = Environment.getExternalStorageDirectory(); 103 File fileDownLoad = new File(parent,fileName); 104 105 for(int i=0;i<3;i++){ 106 long start = i*bloack; 107 long end = (i+1)*bloack-1; 108 //第三個線程需要包括完最后的數據,否則不完整 109 if(i==2){ 110 end = count; 111 } 112 113 DownLoadRunnable runnable = 114 new DownLoadRunnable(url, 115 fileDownLoad.getAbsolutePath(), 116 start,end,handler); 117 //線程池提交任務 118 threadPool.execute(runnable); 119 } 120 } catch (MalformedURLException e) { 121 e.printStackTrace(); 122 } catch (IOException e) { 123 e.printStackTrace(); 124 } 125 } 126 127 //根據URL取出文件名 128 public String getFileName(String url){ 129 return url.substring(url.lastIndexOf("/")+1); 130 } 131 }

?

轉載于:https://www.cnblogs.com/hais/p/4764580.html

總結

以上是生活随笔為你收集整理的Android 模拟多线程下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99热国产在线观看 | 国内特级毛片 | 日日夜夜综合 | 亚洲av无码一区东京热久久 | 久草青青视频 | 又紧又大又爽精品一区二区 | 中文字幕色站 | 精品美女一区 | 住在隔壁的她动漫免费观看全集下载 | 免费无码国产精品 | 亚洲福利视频一区二区 | 视频一区在线免费观看 | 福利电影一区 | 3d动漫精品啪啪一区二区下载 | 爽爽影院在线 | www.国产一区二区三区 | www国产视频 | 农村黄色片 | 欧美日韩一区二区三区视频 | 日韩在线精品视频 | 免费伊人 | 靠逼视频网站 | 精品在线一区二区三区 | 欧美乱妇狂野欧美视频 | 国产一线二线在线观看 | 91高清视频在线 | av夜夜操| 免费观看在线视频 | 亚洲色鬼 | 欧美xxxx888| 国产精品视频免费 | 中文字幕一区二区三区波野结 | 亚洲最大成人综合网 | 日韩成人动漫在线观看 | 国内精品一区二区 | 玩日本老头很兴奋xxxx | 国产精品美女久久久久久久 | 97人人精品| 久久久久久夜 | 亚洲网站免费观看 | 日韩视频免费观看高清完整版 | 精品少妇人妻av一区二区 | 亚洲永久免费av | 理论片大全免费理伦片 | 日本韩国免费观看 | 青青视频免费看 | 在线精品一区二区三区 | www黄色| 亚洲码欧美码一区二区三区 | 91天天干| 日韩综合中文字幕 | 2019亚洲天堂 | 老司机午夜免费视频 | 在线观看jizz | 精品国产av一区二区 | 国产福利免费看 | 最近中文字幕免费 | 黄色美女免费网站 | 国产特黄大片aaaa毛片 | 国产青青草在线 | 青青草视频在线观看免费 | 国产一区二区视频在线播放 | 国产精品视频免费网站 | 久久国产精品99久久人人澡 | 极品销魂美女一区二区 | 欧美不卡影院 | 最新日韩在线视频 | 久久中文字幕av | 午夜爱爱网 | 国产成人无码一二三区视频 | 国产香蕉97碰碰碰视频在线观看 | 国产亚洲精品美女久久久久 | 久久神马影院 | 中文字幕人妻一区二区三区在线视频 | 永久福利视频 | 奇米影视久久 | av久久久 | 中国女人内精69xxxxxx | 国产三级日本三级在线播放 | 狠狠躁夜夜躁人爽 | 老司机免费视频 | 手机看片欧美日韩 | 国精产品一二三区精华液 | 五月婷婷六月色 | 成人精品国产免费网站 | 国产成人无码aa精品一区 | 日韩午夜激情视频 | 在线播放91 | 亚洲国产无 | 色先锋在线 | 男生和女生一起差差差视频 | 中文字幕a√ | 无码人妻一区二区三区免费 | 区一区二区三 | 福利视频在线导航 | 视频一区二区视频 | 国产视频二 | 国产在线观看你懂的 | 激情宗合 |