美文网首页
第二十二章 Android本地存储

第二十二章 Android本地存储

作者: 唔笛plk | 来源:发表于2019-07-20 10:38 被阅读0次

    一、 Shareference处理轻量级数据存储

    Sharedpreferences是Android平台上一个轻量级的存储类,用来保存应用程序的各种配置信息,其本质是一个以“键-值”对的方式保存数据的xml文件,其文件保存在/data/data//shared_prefs目录下。在全局变量上看,其优点是不会产生Application 、 静态变量的OOM(out of memory)和空指针问题,其缺点是效率没有上面的两种方法高

    • SharedPreferences:以Map形式存放简单的配置参数;
    • ContentProvider:将应用的私有数据提供给其他应用使用;
    • 文件存储:以IO流形式存放,可分为手机内部和手机外部(sd卡等)存储,可存放较大数据;
    • SQLite:轻量级、跨平台数据库,将所有数据都是存放在手机上的单一文件内,占用内存小;
    • 网络存储 :数据存储在服务器上,通过连接网络获取数据;

    1.commit()和apply()的区别

    • apply方法是将share的修改提交到内存而后异步写入磁盘
    • apply不直接写入磁盘而share本身是单例创建,apply方法会覆写之前内存中的值,异步写入磁盘的值只是最后的值
    • commit是直接写入磁盘,这就造成两者性能上的差异,而commit每次都要写入磁盘,而磁盘的写入相对来说-是很低效的,所以apply方法在频繁调用时要比commit效率高很多。
    • apply虽然高效但是commit也有着自己的优势那就是它可以返回每次操作的成功与否的返回值,根据它我们就可以在操作失败时做一些补救操作。

    2 使用需要注意的地方

    studio提示我们使用apply是在效率上的优化考虑,但是如果你很重视share是否成功操作,并希望在失败时做相应的提示或者补救commit还是更好的选择。

    二、BIO,NIO,AIO

    Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。

    • 同步与异步
      同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。
      异步: 异步就是发起一个调用后,立刻得到被调用者的回应表示已接收到请求,但是被调用者并没有返回结果,此时我们可以处理其他的请求,被调用者通常依靠事件,回调等机制来通知调用者其返回结果。
      同步和异步的区别最大在于异步的话调用者不需要等待处理结果,被调用者会通过回调等机制来通知调用者其返回结果。
    • 阻塞和非阻塞
      阻塞: 阻塞就是发起一个请求,调用者一直等待请求结果返回,也就是当前线程会被挂起,无法从事其他任务,只有当条件就绪才能继续。
      非阻塞: 非阻塞就是发起一个请求,调用者不用一直等着结果返回,可以先去干其他事情。
      举个生活中简单的例子,你妈妈让你烧水,小时候你比较笨啊,在那里傻等着水开(同步阻塞)。等你稍微再长大一点,你知道每次烧水的空隙可以去干点其他事,然后只需要时不时来看看水开了没有(同步非阻塞)。后来,你们家用上了水开了会发出声音的壶,这样你就只需要听到响声后就知道水开了,在这期间你可以随便干自己的事情,你需要去倒水了(异步非阻塞)。

    1. BIO (Blocking I/O)

    同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。

    2. NIO (New I/O)

    IO流是阻塞的,NIO流是不阻塞的。

    相关文章

      网友评论

          本文标题:第二十二章 Android本地存储

          本文链接:https://www.haomeiwen.com/subject/iisslctx.html