DownTask实现后台下载功能
来源:互联网 发布:佛教直播软件 编辑:程序博客网 时间:2024/05/19 00:12
自定义一个DownTask extends AsyncTask<URL, Integer, String> ,三个参数分别是 execute的参数 进度值 onpostExcute的参数,
注意:
1必须在UI线程中创建该实例
2必须在UI线程中调用execute方法
3不得调用以on开头的回调函数。
4别忘了加<uses-permission android:name="android.permission.INTERNET"/>
DownTask中的方法
package com.example.asynctasktest;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.app.ProgressDialog;import android.content.Context;import android.os.AsyncTask;import android.widget.TextView;//三个参数分别是 execute的参数 进度值 onpostExcute的参数public class DownTask extends AsyncTask<URL, Integer, String> {private TextView show;// 可变长的输入参数,与AsyncTask.exucute()对应ProgressDialog pdialog;// 定义记录已经读取行的数量int hasRead = 0;Context mContext;public DownTask(Context ctx) {show = (TextView)((Activity)ctx).findViewById(R.id.textView1);mContext = ctx;}@Overrideprotected String doInBackground(URL... params) {StringBuilder sb = new StringBuilder();try {URLConnection conn = params[0].openConnection();// 打开conn连接对应的输入流,并将它包装成BufferedReaderBufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));String line = null;while ((line = br.readLine()) != null) {sb.append(line + "\n");hasRead++;//调用该方法会触发onProgressUpdate方法publishProgress(hasRead);}return sb.toString();} catch (Exception e) {e.printStackTrace();}return null;}@Override//执行完后回调protected void onPostExecute(String result) {// 返回HTML页面的内容pdialog.dismiss();show.setText(result);}@Override//执行前回调protected void onPreExecute() {pdialog = new ProgressDialog(mContext);// 设置对话框的标题pdialog.setTitle("任务正在执行中");// 设置对话框 显示的内容pdialog.setMessage("任务正在执行中,敬请等待...");// 设置对话框不能用“取消”按钮关闭pdialog.setCancelable(false);// 设置该进度条的最大进度值pdialog.setMax(202);// 设置对话框的进度条风格pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置对话框的进度条是否显示进度(容易卡)pdialog.setIndeterminate(false);pdialog.show();}@Overrideprotected void onProgressUpdate(Integer... values) {// 更新进度show.setText("已经读取了【" + values[0] + "】行!");pdialog.setProgress(values[0]);}}
Activity中的方法
package com.example.asynctasktest;import java.net.MalformedURLException;import java.net.URL;import android.os.Bundle;import android.app.Activity;import android.os.AsyncTask;import android.view.Menu;import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void download(View source) throws MalformedURLException {DownTask task = new DownTask(this);task.execute(new URL("http://10.100.71.61/1.txt"));}}
0 0
- DownTask实现后台下载功能
- web前台后台实现下载功能
- Java后台实现文件下载功能
- 后台通过读取流的形式,实现下载功能
- 用struts2实现下载功能时,浏览器取消下载时后台出现的异常
- IOS后台常驻,实现后台下载
- Service实现后台定时功能
- android Service实现后台下载
- jsp实现下载功能
- 实现文件下载功能
- C#实现下载功能
- java 实现下载功能
- PHP实现下载功能
- java 实现 下载功能
- ashx实现下载功能
- 实现文件下载功能
- Servlet 实现下载功能
- .net实现下载功能
- hdu1210 Eddy's 洗牌问题 水题
- 天天写日记争当文艺青年 2014-5-12
- 2013省赛链接
- 孔明锁
- SQL 基础-->常用函数
- DownTask实现后台下载功能
- 【OpenCV】分离多通道图像RGB的值
- strcpy 为什么需要返回值 为char*
- Apache和Tomcat整合问题
- UML之用例图
- 编辑文章 - 博客频道 - CSDN.NET
- quartus II JTAG 烧写文件*.jic生成
- scrollview里的一些api
- 小练习 ---- 球的落下反弹