1.Picasso
Picasso.with(context)
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
Picasso实现了图片异步加载的功能,还解决了android中加载图片时需要解决的一些常见问题:
1.在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
2.使用复杂的图片压缩转换来尽可能的减少内存消耗
3.自带内存和硬盘二级缓存功能
2.进程管理
Android将进程分为六大类:
前台进程(foreground)
可见进程(visible)
次要服务(secondary server)
后台进程(hidden)
内容供应节点(content provider)
空进程(empty)
a.各类进程的管理策略的阀值相当接近:6,8,16,20,22,24,最大的相差也不到8MB,在实际程序运行中,很容易导致多种类型的进程同时被关闭。
b.阀值上限较低:一般手机启动后,可用内存在50-100左右,但随着手机的使用,可用内存会逐步减少,最后降低到24MB左右,则系统开始启动进程管理机制,开始结束进程,但这个阀限制设在了24MB,相对来说偏低。其结果会导致系统使用一段时间后,整体速度变慢。很明显的就是,当手机长时间使用后,开启电话拨号,相册,照相机等应用时,系统的反应速度极慢。
基于以上几个问题,不难看出,我们修改的目标也将非常明确,主要解决两个矛盾:
a.拉开各进程的阀值层次,使得进程管理机制能更有效得工作
b.提升阀值上限,空出更多的空余内存,以提升系统整体的运行速度
进程管理策略设置原则:
a.前台进程、可见进程和次要服务是与用户体验息息相关的内容,这部分的进程管理策略要相对保守,给这些进程留下足够的运行空间
b.压榨无用进程,腾出内存空间给主要程序使用
3.文件创建
String filepath = "/storage/emulated/0/Android/data/com.xxx.xxx/cache/1477707849233.jpg"
File file = new File(filepath) file为null(debug调试)
File file = new File(directory,filename)创建OK
4.assets目录
assets存放于main文件夹下,会显示出金黄色钱币图标
5.点九图问题
四个方向必须标识出来,否则会报错:Error: java.lang.RuntimeException: Some file crunching failed, see logs for details
6.WebView 嵌套在RecyclerView
WebView为其中的一个条目时,直接作为父布局放在item.xml中
<?xml version="1.0" encoding="utf-8"?>
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/wbv_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
7.Bitmap占用的内存计算
占用的内存=像素总数 * 每个像素占用的内存。
在Android中,Bitmap有四种像素类型:ARGB_8888、ARGB_4444、ARGB_565、ALPHA_8,他们每个像素占用的字节数分别为4、2、2、1。
因此,一个2000*1000的ARGB_8888类型的Bitmap占用的内存为 2000*1000*4=8000000B=8MB。