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的话比用传统的方式要方便的多。


  • 相关阅读:
    LeetCode题目:Gray Code
    LeetCode题目: Remove Duplicate Letters
    非阻塞socket中read、write返回值
    C连接MySql
    使用GDB调试程序
    C语言中使用库函数解析命令行参数
    把服务器当网盘玩 教你从云服务器下载自己的文件
    微信小程序 地图选点 获取用户选择的定位信息 wx.chooseLocation
    如何避免高不成低不就? 疫情当下Java学习路线分享
    微信小程序 获取手机号 JS
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5102295.html
Copyright © 2011-2022 走看看