本文主要是介绍Android大数据、断点续传、耗时下载之DownloadManager开发简介(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android大数据、断点续传、耗时下载之DownloadManager开发简介(1)
Android涉及到的网络数据请求,如果是零星数据、且数据量较小(几十KB到几百KB,1MB以内),一般的,可以自己使用Android原生HTTP或者第三方开源框架如Volley(相关文章:http://blog.csdn.net/zhangphil/article/details/48049831),AsyncHttpClient(相关文章:http://blog.csdn.net/zhangphil/article/details/48595817 ),Glide(相关文章,http://blog.csdn.net/zhangphil/article/details/45535693 )等等异步数据请求轻松完成任务。
然而,如果下载数据大,几MB到几百MB甚至GB量级的数据,这种情况下载任务必然耗时,并且极可能需要断点续传,典型的,如现在很多手机应用市场APP,给用户提供多任务下载APP安装文件到本地的功能,而这些APP小则几MB大则上百MB,那么这种场景就应该考虑使用Android DownloadManager。
Android DownloadManager就是为了支持大数据、断点续传这些下载任务而设计的。
现在给出一个简单的例子,说明如何使用Android DownloadManager从一个给定的URL下载一个较大数据(若干MB)。
测试的MainActivity.Java:
- package zhangphil.demo;
-
- import android.app.Activity;
- import android.app.DownloadManager;
- import android.app.DownloadManager.Request;
- import android.content.Context;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Environment;
- import android.view.View;
- import android.widget.Button;
-
- public class MainActivity extends Activity {
-
- private DownloadManager downloadManager;
- private long Id;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Button button = (Button) findViewById(R.id.button);
- button.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
-
-
- downloadManager.remove(Id);
- }
- });
-
- downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
-
-
- Request request = new Request(
- Uri.parse("http://apkc.mumayi.com/2015/03/06/92/927937/xingxiangyi_V3.1.3_mumayi_00169.apk"));
-
-
- request.setAllowedNetworkTypes(Request.NETWORK_WIFI);
-
-
- request.setTitle("我的下载");
- request.setDescription("下载一个大文件");
-
- request.setNotificationVisibility(Request.VISIBILITY_VISIBLE | Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
-
-
-
-
-
-
- request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "my.apk");
-
-
- Id = downloadManager.enqueue(request);
- }
- }
MainActivity.java需要的activity_main.xml里面仅仅只有一个Button按钮用于测试取消下载任务,在次不再赘述。
不要忘记在AndroidManifest.xml中添加相关权限。读写存储设备权限,网络访问请求权限,以及下载权限:
- <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <uses-permission android:name="android.permission.INTERNET"/>
这篇关于Android大数据、断点续传、耗时下载之DownloadManager开发简介(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!