zoukankan      html  css  js  c++  java
  • Android使用开源项目Xutils实现多线程下载文件

    #1.下载utils项目

    https://github.com/wyouflf/xUtils


    #2布局文件里实现UI


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <EditText
            android:id="@+id/tv_path"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="http://down.360safe.com/inst.exe" />
        <Button
            android:layout_marginTop="10dip"
            android:layout_width="match_parent"
            android:onClick="download"
            android:layout_height="wrap_content"
            android:text="下载"
             />
        <TextView
             android:id="@+id/tv_info"
              android:layout_width="match_parent"
              android:layout_marginTop="10dip"
          	  android:layout_height="wrap_content"
          	  android:text="提示信息"
             />
        
    
    </LinearLayout>
    

    #3.在mainactivity中实现代码功能

    package com.wzw.downloaddemo;
    
    
    import java.io.File;
    
    import com.lidroid.xutils.HttpUtils;
    import com.lidroid.xutils.exception.HttpException;
    import com.lidroid.xutils.http.HttpHandler;
    import com.lidroid.xutils.http.ResponseInfo;
    import com.lidroid.xutils.http.callback.RequestCallBack;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
    	private EditText etPath;
    	private TextView tvInfo;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		etPath=(EditText) findViewById(R.id.tv_path);
    		tvInfo=(TextView) findViewById(R.id.tv_info);
    		
    		
    	}
    	public void download(View v){
    		String path =etPath.getText().toString();
    		HttpUtils http = new HttpUtils();
    		http.download(path, "/sdcard/360.exe", true, true, new RequestCallBack<File>() {
    
    	<span style="white-space:pre">	</span>@Override
    	        public void onStart() {
    	            tvInfo.setText("正在连接...");
    	        }
    			
    			 @Override
    		    public void onLoading(long total, long current, boolean isUploading) {
    		           tvInfo.setText(current + "/" + total);
    			 }
    			
    			 @Override
    		     public void onFailure(HttpException error, String msg) {
    		           tvInfo.setText(msg);
    		      }
    
    			@Override
    			public void onSuccess(ResponseInfo<File> responseInfo) {
    				// TODO Auto-generated method stub
    				tvInfo.setText("downloaded:" + responseInfo.result.getPath());
    			}
    		});
    		
    	}
    
    }
    


    用Utils的话比用传统的方式要方便的多。


  • 相关阅读:
    附加数据库报错:无法打开物理文件 XXX.mdf",操作系统错误 5:"5(拒绝访问。)"
    Java(TM) SE Development Kit 6 卸载不掉怎么办
    (转)WCF入门教程(一)简介
    (转)SQL Server 2008怎样编辑200行以上的数据
    远程桌面下如何打开任务管理器
    在 sys.servers 中找不到服务器的解决办法,自己解决的
    MySQL 8小时问题
    Spring 事件机制
    MapReduce架构
    HDFS架构
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5102295.html
Copyright © 2011-2022 走看看