为什么80%的码农都做不了架构师?>>>   

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() {@Overridepublic 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>() {@Overridepublic 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时,跳转特定页面,并展示当前下载进度。

转载于:https://my.oschina.net/leov1/blog/506451

Android Ion 框架 文件下载相关推荐

  1. android 常用框架整理

    文章目录 UI 框架 WebView 框架 具体内容 UI 卫星菜单 节选器 下拉刷新 模糊效果 HUD与Toast 进度条 UI其他 动画 网络相关 网络连接 网络测试 图像获取 响应式编程 地图 ...

  2. Android 开源框架精选

    1. github排名 https://github.com/trending,github搜索:https://github.com/search 2.https://github.com/wasa ...

  3. Android流行框架(二)

    第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.P ...

  4. android最新框架,XUpdate 一个轻量级、高可用性的Android版本更新框架

    XUpdate 一个轻量级.高可用性的Android版本更新框架.赶紧点击使用说明文档,体验一下吧! 特点 支持post和get两种版本检查方式,支持自定义网络请求. 支持设置只在wifi下进行版本更 ...

  5. android开发关掉发现更新的官方版本,XUpdate:轻量级、高可用性的 Android 版本更新框架...

    一个轻量级.高可用性的Android版本更新框架 关于我 特点 支持post和get两种版本检查方式,支持自定义网络请求. 支持设置只在wifi下进行版本更新. 支持静默下载.自动版本更新. 提供界面 ...

  6. android图形框架之surfaceflinger分析(一)

    1. 概念 surfaceflinger作用是接受多个来源的图形显示数据,将它们合成,然后发送到显示设备.比如打开应用,常见的有三层显示,顶部的statusbar底部或者侧面的导航栏以及应用的界面,每 ...

  7. 2017年Android百大框架排行榜

    >随意转载,标注作者"金诚"即可 >本文已经开源到Github上,欢迎各位共同编辑.参与到榜单的建设中来 >Github 地址 一.榜单介绍 排行榜包括四大类: ...

  8. 【Android学习】Android常用框架

    1,缓存 1)DiskLruCache Java实现基于LRU的磁盘缓存. 2,图片 1)Glide(已使用) ①概念 图片加载.  Glide 支持拉取,解码和展示视频快照,图片,和GIF动画. ② ...

  9. android之ion内存储器管理器,Android ION

    场景:android之ION内存储器管理器(1)- 简介 android之ION内存管理器(1)-- 简介 by JHJ(jianghuijun211@gmail.com) 为什么需要ION 回顾20 ...

最新文章

  1. 关于dell - R710的磁盘管理
  2. Scala教程之:PartialFunction
  3. slope one算法matlab,求助我这个寻峰算法该怎么提高灵敏度
  4. oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
  5. 将一个字段的多个记录值合在一行
  6. python 入门基础-零基础入门Python,看这一篇就够了!
  7. ddwrt 扩张linux分区,『2010.8.9』DDWRT脱机下载+架设网站修正加强版tar.gz模式发布(修复下载地址)...
  8. VS编译时自动引用Debug|Release版本的dll
  9. git 远程仓库 remote 使用总结
  10. Luogu P2525题解
  11. SEO黑帽寄生虫快排的生成原理及做法[详解]
  12. 微信小程序 input、picker组件
  13. DNA测序也有批次效应?
  14. 双离合档把上按钮作用_双离合怎么换挡图解,7速双离合档位示意图
  15. 停车还能360全方位影像_新款途锐2.0版、3.0版均能升级的原厂360全景影像及盲点辅助系统...
  16. kubernetes cordon原理
  17. Oracle裁员,N+6赔偿,你只看到幸福感?
  18. 编程软件GX Works2入门:基本功能名词简述
  19. PB控件:Graph图形控件
  20. 怎样才能上传百度文库,上传百度文库的操作步骤和技巧

热门文章

  1. 《剑指offer》全解(图文结合,通俗易懂,一篇看爽)
  2. leetcode44. 通配符匹配 又是一道没有解释的字符串dp困难题
  3. java int 包_int readInt()
  4. 为什么说选择正确的编程语言很重要,以及如何正确的选择
  5. 专访阿里云总裁王文彬:做出“用得爽”的工程产品
  6. C语言extern关键词—最会带帽子的关键字
  7. 工作流 activity 视频教程 + redis 视频教程 百度网盘分享地址
  8. 我爱学习第一天(委托)
  9. 实现一个用户取过的数据不被其他用户取到
  10. Python 删除满足条件的某些行