alonealice

个人博客

ViewModel的使用和原理

ViewModel 是一种用来存储和管理UI相关数据的类。同时在配合LiveData 情况下还支持在系统配置发生改变的时候自动对数据进行保存。它可以用来管理Activity和Fragment中的数据,也可以拿来处理Fragment与Fragment之间的通信等。 ViewModel的使用 添加依赖 12implementation 'androidx.appcompat:appcompat:......

Room数据库的介绍和使用

介绍 Room数据库是Google提供的一个ORM库,提供了SQLite的抽象层,以便在充分利用SQLite的同时允许流畅的数据库访问。 其主要有三个组件: @Database:@Database用来注解类,并且注解的类必须是继承自RoomDatabase的抽象类。该类主要作用是创建数据库和创建Daos(data access objects,数据访问对象)。 @Entity:@Entity......

LiveData使用和原理

LiveData是什么 LiveData 是一个可以保存数据和观察数据变化的组件,主要是被设计用来在ViewModel中保存数据。LiveData是一个可被观察的数据持有者类,这个跟RxJava的Observable有点类似。但与Observable不同,LiveData能够感知到应用程序组件的生命周期变化。因此它能遵守Activity、Fragment、Service等组件的生命周期,这样......

Android8.0通知栏

在日常使用Android手机的过程中,我们经常会遇到被各种通知轰炸的情况。大量的通知,极大的降低了使用体验,同时也将真正有用的信息淹没。虽然手机可以屏蔽这些通知,但是一旦屏蔽,应用里重要的通知也无法再提示,让人进退两难。 面对这种情况,google在Android8.0系统中开始对其进行改进优化。 在Android8.0中,google引入了通知渠道的概念。每个应用都可以创建自己的通知渠道,......

nio学习笔记(三)

FileChannel FileChannel是一个文件的通道,可以通过它来读写文件。FileChannel无法设置为非阻塞模式。 读数据: 1234RandomAccessFile accessFile = new RandomAccessFile(filePath, "rw");FileChannel fileChannel = accessFile.getChann......
nio

nio学习笔记(二)

RandomAccessFile RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分。 读写文件 123456789//打开文件RandomAccessFile file = new RandomAccessFile(filePath, "rw");//读取文件int aByte = file.read();//写入文件file.write(t......
nio

nio学习笔记

在学习nio之前,首先要弄清楚什么是nio,以及它与平时使用的io的区别。 NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础。它已经被越来越多地应用到了大型应用服务器中,是一种解决高并发与大量连接、I/O处理问题的有效方式。 我们都知道,IO是面向流的, 这面向流意味着每次可以从流中读一个或多个字节,直至......
nio

android WebView优化

在android使用WebView去显示页面时,有一个很严重的问题就是慢。这个慢会导致页面白屏时间或者等待时间过长,严重影响用户体验。 在WebView加载页面的过程中,主要有这么几个步骤:WebView初始化,建立连接,获取数据,页面框架渲染,JS加载、解析。那么我们依次来看看这些环节有哪些可以优化的地方可以加快WebView的页面显示。 WebView初始化 App中打开WebView的......

WebView缓存简述

WebView缓存在日常的使用中非常重要,它不仅能使用户能够在离线的情况下依旧可以使用它,更重要的是,它可以加快网页的加载速度,减少服务器的负载。 WebView主要包括两类缓存,一类是浏览器自带的网页数据缓存,这是所有的浏览器都支持的、由HTTP协议定义的缓存;另一类是H5缓存,这是由web页面的开发者设置的。 浏览器自带的网页数据缓存 浏览器缓存机制是通过HTTP协议Header里的Ca......

WebView与Js交互

在日常开发中我们经常会使用WebView,尤其是那些动态化要求很高的页面。而在使用WebView的过程中,又会有很多的问题。比如说WebView加载慢,内存消耗大以及和原生代码交互的问题。这篇文章就来简单讲讲WebView与Native交互的问题。 Native于 JavaScript 交互 java Native代码与 JavaScript 交互主要有3中方法: 1.使用系统方法 addJ......