ch031 Android AsyncTask
--------------------------------------------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);
}
}
}
--------------------------------------------结果----------------------------------------------------
<!--EndFragment-->
更多相关文章
- Android异步处理系列文章四篇之一使用Thread+Handler实现非UI线
- Android 网络编程 目录
- .Net 转战 Android 4.4 日常笔记目录
- Android 程式开发(原创)の目录索引
- 你对进程线程到底理解有多少
- C# 多线程--线程池的详细介绍
- C#中多线程之Thread类详解
- Catalog Service - 解析微软微服务架构实例代码
- C#线程控制的实例详解