Android Ion 框架 文件下载

ion是的一个安卓异步网络和图片加载库。

特性

  • 异步下载:
    • 下载图片 (用ImageViews 或者 Bitmaps显示);
    • 下载JSON文件 (通过Gson解析);
    • 下载字符串;
    • 下载文件;
  • Fluent API;
  • 当呼叫活动(calling Activity)结束时,可以自动取消网络操作。
  • 所有的操作都返回一个Future(http://en.wikipedia.org/wiki/Futures_and_promises),并且可以取消;
  • HTTP POST/PUT;
  • 缓存;
  • Gzip/Deflate 压缩
  • 当有多个IP地址时,自动选择最好最稳定的服务器连接; 9. 支持Cookies 等等。

Github 项目地址为: ion github

Eclipse jar包导入形式:

需要使用到两个jar 分别为: androidasync.jar  和 Ion.jar

个人测试 下载文件部分代码如下:

 public static void NewDownload(RequestParams params,final Context mcontext,final BaseInfo t){
           progressBar = new ProgressBar(mcontext);
           progressDialog = new ProgressDialog(mcontext);
           LogCat.i(Constants.getLogTag(), Constants.getRequestHost()+t.getDownloadUrl());
            final NotificationManager nm = (NotificationManager) mcontext.getSystemService(Context.NOTIFICATION_SERVICE);
            final Notification.Builder builder = new Notification.Builder(mcontext);
          builder.setWhen(System.currentTimeMillis()).setContentTitle(t.getName()+ "下载中").setContentText(t.getVersionName());
           builder.setLargeIcon(bitmap);
           builder.setSmallIcon(R.drawable.download_icon);
        File file = Environment.getExternalStorageDirectory();
        File file2 = new File(file, "down");
        file2.mkdir();
        file2 = new File(file2,t.getName()+ ".apk");
          Ion.with(mcontext).load(Constants.getRequestHost()+t.getDownloadUrl()).progressBar(progressBar).progressDialog(progressDialog)
           .progress( new ProgressCallback() {
                 @Override
                 public void onProgress( long downloaded, long total) {
                          builder.setProgress(( int)(total/(1024*1024)), (int)downloaded/(1024*1024), false);
                          builder.setContentText(downloaded/(1024*1024)+ "."+downloaded%(1024*1024)+ "M"+ " / " + (total/(1024*1024))+"."+(total%(1024*1024))+"M" );
                           Intent intent = new Intent(mcontext,DownloadingActivity.class );
                           Bundle bundle = new Bundle();
                           bundle.putLong( "downloaded", downloaded);
                           bundle.putLong( "total", total);
                           bundle.putSerializable( "appInfo", t);
                           intent.putExtras(bundle);
                          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                           PendingIntent pendintent= PendingIntent.getActivity(mcontext, Notification_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                           builder.setContentIntent(pendintent);
                           Notification notification = builder.getNotification();
                           nm.notify(Notification_id, notification);
                }
           }).write(file2).setCallback( new FutureCallback<File>() {
                
                 @Override
                 public void onCompleted(Exception e, File file) {
                      if (e == null) {
                           AppUtil.install(mcontext, Environment.getExternalStorageDirectory()+File.separator+"down" +File.separator+t.getName()+".apk");
                           nm.cancel(Notification_id);
                     } else{
                           Utils.showToast(mcontext, "下载失败,请稍后重试" );
                           nm.cancel(Notification_id);
                     }
                }
           });
     }

根据请求,使用Notification的形式动态展示 当前下载进度展示,并设定了 PendingIntent ,点击Notification时,跳转特定页面,并展示当前下载进度。

时间: 2024-10-15 21:44:59

Android Ion 框架 文件下载的相关文章

Android通用框架设计与完整电商APP开发

第1章 课程介绍及APP效果展示(Java版)本章概述了本课程大家能学到什么,老师如何讲解,为什么这么讲解,并介绍了框架的整体架构设计与模块分解,最后展示了用自己设计的框架开发出来的完整电商APP的效果图(服务端API快速搭建教程:http://www.imooc.com/article/19001) ...1-1 课程导学1-2 项目架构设计与模块分解 第2章 项目初始化本章将从零搭建一个空项目,实践项目搭建的过程,并额外教大家搭建一个基于Go语言的Web版Git服务器,实现代码托管的自举.(

Android开源框架 Android-Universal-Image-Loader

Android开源框架Universal-Image-Loader就像图片加载守护者,为我们提供了丰富的功能特性: (1)多线程加载图像(异步或同步): (2)高度可定制化imageloader配置(线程池.图片下载器.解码器.内存和磁盘缓存.显示图像选项等): (3)每一个显示图像有许多自定义选项(存根图片,缓存开关,解码选项,位图处理和显示等): (4)支持内存和磁盘上的图像缓存(设备的文件系统和SD卡): (5)监听加载过程(包括下载进度): 下来我们详解如何配置使用Universal-I

android多媒体框架学习 详解 最新版本

一:多媒体框架概述   jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了!也体现了media 在整个android系统中的重要性!framework/av下都是些C/C++代码(libmedia,libmediaplayerservice,libstagefright),jni和 java api 还是保留在原来的位置,改革还不够彻底,但还是迈出了这一步,以后维护能更好的进

android系统启动框架、Activity界面显示过程详解

一.Android系统框架 android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.盗图如下: 具体每层的功能介绍如下: (1) 应用程序层 该层提供一些核心应用程序包,例如电子邮件.短信.日历.地图.浏览器和联系人管理等.同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等.友好共处. (2)应用程序框架层 该层是Android应

Android Xutils 框架

Android Xutils 框架 (转) 目录(?)[-] xUtils简介 目前xUtils主要有四大模块 使用xUtils快速开发框架需要有以下权限 混淆时注意事项 DbUtils使用方法 ViewUtils使用方法 HttpUtils使用方法 普通get方法 使用HttpUtils上传文件 或者 提交数据 到服务器post方法 使用HttpUtils下载文件 BitmapUtils 使用方法 其他更多示例代码见sample文件夹中的代码 输出日志 LogUtils xUtils简介 xU

Android View框架总结(八)ViewGroup事件分发机制

请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上面的EventButton继承TextView的话,按下抬起,会有一个现象,我可以告诉大家现象:就是只有dispatchTouchEvent ACTION_DOWN,onTouch ACTION_DOWN,onTouchEvent ACTION_DOWN这三个,你移动,或者抬起,是没有MOVE,或者

Android游戏框架Libgdx使用入门

转载自:http://blog.csdn.net/cping1982/article/details/6176191 Libgdx作者博客:http://www.badlogicgames.com/ Libgdx项目地址:http://code.google.com/p/libgdx/ Libgdx是一款支持2D与3D游戏开发的游戏类库,兼容大多数微机平台(标准JavaSE实现,能执行在Mac.Linux.Windows等系统)与Android平台(Android1.5以上就可以使用.Andro

AFinal-开源android应用框架简介

正文 1. 官方网站 开源中国社区AFinal项目 2. 简介 Afinal 是一个android的sqlite orm 和 ioc 框架. 同时封装了android中的http框架,使其更加简单易用:使用finalBitmap,无需考虑bitmap在android 中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题. Afinal的宗旨是简洁,快速.约定大于配置的方式.尽量一行代码完成所有事情. 什么是orm? 对象关系映射(英语:Object Relational Mapping

Android Afinal框架学习(一) FinalDb 数据库操作

框架地址:https://github.com/yangfuhai/afinal 对应源码: net.tsz.afinal.annotation.sqlite.* net.tsz.afinal.db.sqlite.* net.tsz.afinal.db.table.* net.tsz.afinal.utils.ClassUtils.net.tsz.afinal.utils.FieldUtils FinalDb 建库 FinalDb db = FinalDb.create(context, "my