Welcome 微信登录

首页 / 移动开发 / Android

Android实现图片缓存与异步加载

Android实现图片缓存与异步加载

ImageManager2这个类具有异步从网络下载图片,从sd读取本地图片,内存缓存,硬盘缓存,图片使用动画渐现等功能,已经将其应用在包含大量图片的应用中一年多,没有出现oom。Android程序常常会内存溢出,网上也有很多解决方案,如软引用,手动调用recycle等等。但经过我们实践发现这些方案,都没能起到很好的效果,我们的应用依然会出现很多oom,尤其我们的应用包含大量的图片。android3.0之后软引用基本已经失效,因为虚拟机只要碰到软引用就回收,...
Android实现图片异步加载及本地缓存

Android实现图片异步加载及本地缓存

在android项目中访问网络图片是非常普遍性的事情,如果我们每次请求都要访问网络来获取图片,会非常耗费流量,而且图片占用内存空间也比较大,图片过多且不释放的话很容易造成内存溢出。针对上面遇到的两个问题,首先耗费流量我们可以将图片第一次加载上面缓存到本地,以后如果本地有就直接从本地加载。图片过多造成内存溢出,这个是最不容易解决的,要想一些好的缓存策略,比如大图片使用LRU缓存策略或懒加载缓存策略,首先介绍一下本地缓存图片。首先看一下异步加载缓存本地代码:p...
Android编程中黑名单的实现方法

Android编程中黑名单的实现方法

本文实例讲述了Android编程中黑名单的实现方法。分享给大家供大家参考,具体如下:说明:由于挂断电话android api不是对外开放的,所以需要使用反射的方法得到拨打电话的服务。1.将android源代码中的"aidl"文件拷贝到项目中这样项目中会生成两个包:android.telephony;此包中文件为:NeighboringCellInfo.aidlcom.android.internal.telephony;此包中文件为:ITelephony....
Android使用缓存机制实现文件下载及异步请求图片加三级缓存

Android使用缓存机制实现文件下载及异步请求图片加三级缓存

首先给大家介绍Android使用缓存机制实现文件下载在下载文件或者在线浏览文件时,或者为了保证文件下载的正确性,需要使用缓存机制,常使用SoftReference来实现。SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程对该Java对象的回收。也就是说,一旦SoftReference保存了对一个Java对象的软引用后,在垃圾线程对这个Java对象回收前,SoftReference类所提供的get(...
Android实现图片异步加载并缓存到本地

Android实现图片异步加载并缓存到本地

在android应用开发的时候,加载网络图片是一个非常重要的部分,很多图片不可能放在本地,所以就必须要从服务器或者网络读取图片。软引用是一个现在非常流行的方法,用户体验比较好,不用每次都需要从网络下载图片,如果下载后就存到本地,下次读取时首先查看本地有没有,如果没有再从网络读取。下面就分享一下异步加载网络图片的方法吧。FileCache.javaimport java.io.File; import android.content.Context;publ...
微信支付终于成功了(安卓、iOS)在此分享

微信支付终于成功了(安卓、iOS)在此分享

经过了几天的痛苦煎熬,终于把微信支付调通,整个调试过程很痛苦,痛苦的主要来源是微信支付的调试真的是,以前调试公众号支付也是一波三折啊。好吧,开始!首先说明,我这里主要没有使用getToken,getOrder方法,我的所有参数全部是在后端生成传递给前端的,看了一下前面朋友分享的源代码,还用到了jquery,md5,sha对于新手来说简直是天文啊,而且jquery在apicloud中效率不好,所以放弃了研究那个代码,另外官方也说了,最好签名等参数全部服务器端...
Android夜间模式最佳实践

Android夜间模式最佳实践

由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验。目前越来越多的应用开始把夜间模式加到自家应用中,没准不久google也会把这项功能添加到Android系统中吧。业内关于夜间模式的实现,有两种主流方案,各有其利弊,我较为推崇第三种方案:1、通过切换theme来实现夜间模式。2、通过资源id映射的方式来实现夜间模式。3、通过修改uiMode来切换夜间模式。值得一提的是,上面提到的几种方案,都是资源...
Android模糊处理简单实现毛玻璃效果

Android模糊处理简单实现毛玻璃效果

自从iOS系统引入了Blur效果,也就是所谓的毛玻璃、模糊化效果、磨砂效果,各大系统就开始竞相模仿,这是怎样的一个效果呢,我们先来看一下,如下面的图片:实现效果大家都知道了,如何在Android中实现呢,说白了就是对图片进行模糊化处理,小编先给大家讲一下Android高级模糊技术的原理,如下:首先我创建了一个空的bitmap,把背景的一部分复制进去,之后我会对这个bitmap进行模糊处理并设置为TextView的背景。通过这个bitmap保存Canvas的...
Android的HTTP类库Volley入门学习教程

Android的HTTP类库Volley入门学习教程

1. 什么是Volley我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高。不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不...
从源码分析Android的Volley库的工作流程

从源码分析Android的Volley库的工作流程

Volley现在已经被官方放到AOSP里面,已经逐步成为Android官方推荐的网络框架。类抽象对Http协议的抽象Requeset顾名思义,对请求的封装,实现了Comparable接口,因为在Volley中是可以指定请求的优先级的,实现Comparable是为了在Request任务队列中进行排序,优先级高的Request会被优先调度执行。NetworkResponseHttp响应的封装,其中包括返回的状态码 头部 数据等。Response给调用者返回的结...
Android app开发中Retrofit框架的初步上手使用

Android app开发中Retrofit框架的初步上手使用

Retrofit 2.0先来说一下Retrofit 2.0版本中一些引人注意的地方。在Retrofit 2.0中,最大的改动莫过于减小库的体积,首先,Retrofit 2.0去掉了对所有的HTTP客户端的兼容,而钟情于OkHttpClient一个,极大地减少了各种适配代码,原因一会儿说;其次,拆库,比如将对RxJava的支持设置为可选(需要额外引入库);再比如将各个序列化反序列化转换器支持设置为可选(需要额外引入库)。于2.0抛弃HttpClient和Ht...
Android线程的优先级设置方法技巧

Android线程的优先级设置方法技巧

对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题,比如很多无关紧要的线程会占用大量的CPU时间,虽然通过了MultiThread来解决慢速I/O但是合理分配优先级对于并发编程来说十分重要。Android在线程方面主要使用的是Java本身的Thread类,我们可以在Thread或Runnable接口中的run方法首句加入Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGRO...
简略分析Android的Retrofit应用开发框架源码

简略分析Android的Retrofit应用开发框架源码

面对一个项目,对于Android应用开发框架的选择,我想过三种方案:1.使用Loader + HttpClient + GreenDao + Gson + Fragment,优点是可定制性强,由于使用Google家自己的Loader和LoaderManager,代码健壮性强。缺点是整套代码学习成本较高,使用过程中样板代码较多,(比如每一个Request都需要产生一个新类)2.Volley,作为Google在IO大会上得瑟过的一个网络库,其实不算什么新东西(...
举例讲解Android应用开发中OTTO框架的基本使用

举例讲解Android应用开发中OTTO框架的基本使用

OTTO是一个EventBus类型的事件传输总线,它可以提供“存储转发”的功能,让你APP中各个组件的交流更加便利,让你的程序分层更加清晰。使用场景OTTO基于Observer设计模式。它有发布者,订阅者这两个主要对象。OTTO的最佳实践就是通过反射牺牲了微小的性能,同时极大的提高了程序的耦合度,更加利于MVP分工开发与维护。业务层开发者在处理资源(比如Db, REST等)后并发布消息,展示层开发者(比如Activity/Fragment)就可以处理消息,...
<< 231 232 233 234 235 236 237 238 239 240 >>