--------------------------------------------AndroidManifest.xml---------------------------------

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

package="com.ch31"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk

android:minSdkVersion="10"

android:targetSdkVersion="15"/>

<!--sdcard读写权限-->

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!--sdcard创建目录与文件权限-->

<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!--网络访问权限-->

<uses-permissionandroid:name="android.permission.INTERNET"/>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

--------------------------------------------MainActivity.java-------------------------------------

packagecom.ch31;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.net.HttpURLConnection;

importjava.net.MalformedURLException;

importjava.net.URL;

importandroid.app.Activity;

importandroid.app.Dialog;

importandroid.app.ProgressDialog;

importandroid.os.AsyncTask;

importandroid.os.Bundle;

importandroid.os.Environment;

/**

*

*项目名称:com.ch31

*类名称:MainActivity

*类描述:异步任务=handler+thread

*创建人:方勇

*创建时间:2012-12-26上午11:48:02

*Copyright(c)方勇-版权所有

*/

publicclassMainActivityextendsActivity{

/*目录/mnt/sdcard*/

privateFilerootDie;

/*输出文件名称*/

privateStringoutFileName="a07.rar";

/*进度条对话框*/

privateProgressDialogpdialog;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/*检查sdcard并创建目录文件*/

checkAndCreateDir();

/*异步下载*/

newMyAdyncTask().execute("http://192.168.4.134:8080/tool.rar");

}

@Override

protectedDialogonCreateDialog(intid){

/*实例化进度条对话框*/

pdialog=newProgressDialog(this);

/*进度条对话框属性设置*/

pdialog.setMessage("download.....");

pdialog.setMax(100);

pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pdialog.setIndeterminate(false);//无限循环模式

pdialog.setCancelable(true);//可取消

/*显示对话框*/

pdialog.show();

returnpdialog;

}

privatevoidcheckAndCreateDir(){

/*获取sdcard目录/mnt/sdcard*/

rootDie=Environment.getExternalStorageDirectory();

/*新文件的目录*/

FilenewFile=newFile(rootDie+"/mydownload1/");

if(!newFile.exists()){

/*创建目录*/

newFile.mkdirs();

}

}

/*异步任务,后台处理与更新UI*/

classMyAdyncTaskextendsAsyncTask<String,String,String>{

/*后台线程*/

@Override

protectedStringdoInBackground(String...params){

/*URL*/

try{

URLurl=newURL(params[0]);

HttpURLConnectionconn=(HttpURLConnection)url.openConnection();

/*URL属性设置*/

conn.setRequestMethod("GET");

/*URL建立连接*/

conn.connect();

//conn.setDoInput(true);

/*下载文件的大小*/

intfileOfLength=conn.getContentLength();

/*每次下载的大小与总下载的大小*/

inttotallength=0;

intlength=0;

/*输入流*/

InputStreamin=conn.getInputStream();

/*输出流*/

FileOutputStreamout=newFileOutputStream(newFile(rootDie+"/mydownload1/",outFileName));

/*缓存模式,下载文件*/

byte[]buff=newbyte[1024*1024];

while((length=in.read(buff))>0){

totallength+=length;

Stringstr1=""+(int)((totallength*100)/fileOfLength);

//publishProgress(newString[]{str1,"aa","bb"});

publishProgress(str1);

out.write(buff,0,length);

}

/*关闭输入输出流*/

in.close();

out.flush();

out.close();

}catch(MalformedURLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnnull;

}

/*预处理UI线程*/

@Override

protectedvoidonPreExecute(){

showDialog(0);

super.onPreExecute();

}

/*结束时的UI线程*/

@Override

protectedvoidonPostExecute(Stringresult){

dismissDialog(0);

super.onPostExecute(result);

}

/*处理UI线程,会被多次调用,触发事件为publicProgress方法*/

@Override

protectedvoidonProgressUpdate(String...values){

//System.out.println(values[1]);

pdialog.setProgress(Integer.parseInt(values[0]));

//super.onProgressUpdate(values);

}

}

}

--------------------------------------------结果----------------------------------------------------

ch031 Android AsyncTask_第1张图片

<!--EndFragment-->

更多相关文章

  1. Android异步处理系列文章四篇之一使用Thread+Handler实现非UI线
  2. Android 网络编程 目录
  3. .Net 转战 Android 4.4 日常笔记目录
  4. Android 程式开发(原创)の目录索引
  5. 你对进程线程到底理解有多少
  6. C# 多线程--线程池的详细介绍
  7. C#中多线程之Thread类详解
  8. Catalog Service - 解析微软微服务架构实例代码
  9. C#线程控制的实例详解

随机推荐

  1. 转:Android世界的15款开源的游戏开发引擎
  2. Android:EditText 所有属性
  3. Android设置窗口、控件透明度
  4. AndroidUI组件之ListView小技巧
  5. Android的七巧板Activity 三部曲
  6. Android_TextView
  7. button按钮中的文字和drawableLeft的图片
  8. android 开发零起步学习笔记(二十五):Androi
  9. Android(Lollipop/5.0) Material Design(
  10. Android学习第一章第一节android学习路线