• 复习之图片相关


    一. 图片相关?
    1.三级缓存:
    当我们第一次打开应用获取图片或其它资源时,首先到网络去下载,然后依次存入内存缓存,磁盘缓存,
    当我们再一次需要用到刚才下载的这张图片时,就不需要再重复的到网络上去下载,直接可以从内存缓存和磁盘缓存中找,由于内存缓存速度较快,我们优先到内存缓存中寻找该图片,如果找到则运用,
    如果没有找到(内存缓存大小有限),那么我们再到磁盘缓存中去找。
    只要我们合理的去协调这三层缓存运用,便可以提升应用性能,给用户更好的体验
    三级缓存指的是:内存缓存、本地缓存、网络缓存。其各自的特点是内存缓存速度快, 优先读取,本地缓存速度其次, 内存没有该资源信息就去读取本地内存,网络缓存速度较慢(比较对象是内存缓存和本地缓存),假设本地内存也没有,才请求网络获取。
    2.图片优化,以及图片加载框架的使用,如Picasso、 Fresco、Glide等?
    1)尽量使用小的图片,对图片进行压缩,bitmapfactory.options图片配置类,insimplesize进行缩放,设置图片的编码方式;对图片使用软引用,内存不够时即时释图片内存;对图片的复用,三级缓存的使用;
    即时回收不再使用的bitmap对象;
    2)Picasso,不支持gif,缓存的是Argb8888的原图,占用内存较大,图片的框架使用了OkHttp缓存机制,使用Http协议缓存,也是异步加载.
    3)Fresco,框架是FaceBook公司推出的,适合批量加载图片,底层是通过三级缓存(2级内存,1级磁盘)
    加载成功后自动替换成目标图片
    4)glide,Google公司14年推出来的,可以加载GIF图,也可以根据指定图片清晰度,底层的原理:为Bitmap维护一个对象池,对象池的目的是通过减少对象的分配,以重用来提高性能.对象池也可以帮助提高滚动的性能。API简洁易调用
    二.基础知识?
    1.Android下的数据存储方式有那些?
    1)内部存储,直接存储在内部文件中
    2)外部存储,首先要判断外部存储条件是否可用,然后进行存储
    3)SP存储,底层是Xml实现的,以键值对形式存储内部的数据,适宜于轻量级的存储,存储的数据类型有,boolean,String,int
    4)数据库存储,SQlite存储,轻量级的数据库,强大的增删改查功能
    5)内容提供者,ContentProvider,将自己愿意暴露的一部分数据供外部使用操作
    6)网络存储,等等
    Sharepreference 线程安全问题?
    官方文档明确指出,SharedPreferences不支持多线程,进程也是不安全的
    如果想要实现线程安全需重新实现其接口,如下
    prvite static final class SharedPreferenceImpl implements SharePreference{}
    假设在多进程访问SharePreferences的情况下,该如何保证进程安全和共享数据?
    解决办法就是:将需要共享数据的字段提出来统一存储到一个文件中。
    2.对象序列化:
    为什么要序列化?
    1)永久性保存对象,保存对象的字节序列到本地文件中;
    2)通过序列化对象在网络中传递对象;
    3)通过序列化在进程间传递对象。
    在Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口简单,声明即可,而实现Parcelable接口复杂,但效率更高,推荐用这种方法提高性能。两种实现方式依旧是贴url,方便大家快速查询
    两种序列化相关
    既然Google推荐Parcelable这种序列化,在这里,推荐一键生成序列化的插件,
    在Android Studio里面搜索插件,如下图,写起序列化(根本不用你写)。

  • 相关阅读:
    JS_0051:JS GET 请求 获取 url 返回的参数 ; 模拟延时效果 ; 判断手机电脑并跳转
    H50081:背景音乐按钮创建 html元素上禁止拖拽
    CSS0026: div 内 多元素 水平 垂直 均匀 居中 显示
    JS_0056:JS 判断页面加载完成
    JS_0050:JS 字符串加密 解密
    JS_0054:JS 动态设置字体大小 JS 判断浏览器是否联网
    Ajax0007: ajax 同步发送 GET 请求
    JS_0052:JS 禁止触摸屏双指放大,双指缩放。
    移动端调试工具vConsole
    使用安卓 studio 更换app图标
  • 原文地址:https://www.cnblogs.com/awkflf11/p/16204721.html
Copyright © 2020-2023  润新知