国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中使用AsyncTask做下載進度條實例代碼

2019-12-12 03:53:18
字體:
來源:轉載
供稿:網友

android AsyncTask做下載進度條

AsyncTask是個不錯的東西,可以使用它來做下載進度條。代碼講解如下:

package com.example.downloadfile;  import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;  import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.TextView;  public class DownloadFile extends Activity {      public static final String LOG_TAG = "test";        private ProgressDialog mProgressDialog;   public static final int DIALOG_DOWNLOAD_PROGRESS = 0;         File rootDir = Environment.getExternalStorageDirectory();      //定義要下載的文件名   public String fileName = "test.jpg";   public String fileURL = "https://lh4.googleusercontent.com/-HiJOyupc-tQ/TgnDx1_HDzI/AAAAAAAAAWo/DEeOtnRimak/s800/DSC04158.JPG";      @Override   public void onCreate(Bundle savedInstanceState)    {     super.onCreate(savedInstanceState);          setContentView(R.layout.main);     TextView tv = new TextView(this);     tv.setText("Android Download File With Progress Bar");        //檢查下載目錄是否存在      checkAndCreateDirectory("/mydownloads");          //執行asynctask     new DownloadFileAsync().execute(fileURL);   }        class DownloadFileAsync extends AsyncTask<String, String, String> {          @Override     protected void onPreExecute() {       super.onPreExecute();       showDialog(DIALOG_DOWNLOAD_PROGRESS);     }           @Override     protected String doInBackground(String... aurl) {        try {         //連接地址         URL u = new URL(fileURL);         HttpURLConnection c = (HttpURLConnection) u.openConnection();         c.setRequestMethod("GET");         c.setDoOutput(true);         c.connect();                  //計算文件長度         int lenghtOfFile = c.getContentLength();                           FileOutputStream f = new FileOutputStream(new File(rootDir + "/my_downloads/", fileName));               InputStream in = c.getInputStream();          //下載的代碼         byte[] buffer = new byte[1024];         int len1 = 0;         long total = 0;                  while ((len1 = in.read(buffer)) > 0) {           total += len1; //total = total + len1           publishProgress("" + (int)((total*100)/lenghtOfFile));           f.write(buffer, 0, len1);         }         f.close();                } catch (Exception e) {         Log.d(LOG_TAG, e.getMessage());       }              return null;     }          protected void onProgressUpdate(String... progress) {        Log.d(LOG_TAG,progress[0]);        mProgressDialog.setProgress(Integer.parseInt(progress[0]));     }      @Override     protected void onPostExecute(String unused) {       //dismiss the dialog after the file was downloaded       dismissDialog(DIALOG_DOWNLOAD_PROGRESS);     }   }         public void checkAndCreateDirectory(String dirName){     File new_dir = new File( rootDir + dirName );     if( !new_dir.exists() ){       new_dir.mkdirs();     }   }        @Override   protected Dialog onCreateDialog(int id) {     switch (id) {       case DIALOG_DOWNLOAD_PROGRESS: //we set this to 0         mProgressDialog = new ProgressDialog(this);         mProgressDialog.setMessage("Downloading file...");         mProgressDialog.setIndeterminate(false);         mProgressDialog.setMax(100);         mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);         mProgressDialog.setCancelable(true);         mProgressDialog.show();         return mProgressDialog;       default:         return null;     }   } } 

配置文件

注意打開文件保存權限

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.downloadfile"    android:versionCode="1"    android:versionName="1.0">      <uses-permission android:name="android.permission.INTERNET" />   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />      <uses-sdk android:minSdkVersion="4" />   <application android:icon="@drawable/icon" android:label="@string/app_name">     <activity android:name=".DownloadFile"          android:label="@string/app_name">       <intent-filter>         <action android:name="android.intent.action.MAIN" />         <category android:name="android.intent.category.LAUNCHER" />       </intent-filter>     </activity>   </application> </manifest> 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新民市| 盐亭县| 万载县| 石渠县| 洛扎县| 封开县| 自贡市| 岫岩| 胶州市| 横山县| 安溪县| 汾西县| 天峻县| 板桥市| 台中县| 积石山| 广安市| 雅江县| 贡嘎县| 新竹县| 牟定县| 张家界市| 楚雄市| 杭州市| 淳化县| 瑞金市| 绥德县| 许昌市| 尼木县| 孝昌县| 专栏| 洮南市| 长春市| 嘉定区| 新平| 丰都县| 鄂伦春自治旗| 秦安县| 日土县| 拜城县| 昭觉县|