数据存储,网络通信|青训营笔记

67 阅读2分钟

这是我参加第四届青训营笔记创作活动的第三天。 App内容的获取都是通过网络请求,行业中基本都是用Retrofit和OkHttp组合的方式进行网络请求。 Retrofit接口使用,在相关模块中新增依赖,创建用于描述网络请求的接口,发起网络请求,首先创建Retrofit实例,创建请求接口的势力,并获取到Call实例,调用Call.enqueue进行异步请求,处理返回的数据。网络注解有很多。内部网络库是TTNEt,基于Retrofit改造,具备Retrofit所具有的优点,支持流解析。 注解可以理解为一个标签,可以在类,方法,参数,成员变量上,并在合适的时机读取注解的内容,进行处理。注解的处理,一般有三个时机,Source:只在源码中有效,编译时抛弃,Class:编译class文件时有效,一般用到出街注解处理器,Runtime:在运行期间,获取对应的注解。 Retrofit是在运行期间,配合JAVA动态代理,获取方法和参数的注解,并构造Request对象的。TTNet替换了库底层的OKHttpClient和OKHttpCall。 持久性的本地数据存储是Android,在应用被杀死的情况下,保持数据不会被清除。 Room是在SQLite上提供了一个抽象层,一边充分利用SOLite的强大功能,同时流畅地访问数据库。编译期,通过Kapt处理@Dao,@Database注释,动态生成对应的实现类。底层使用Android提供的SupportSQLiteOpenHelper实现数据库的增查删改。通过看源码可以知道结构布局。 首先接入Gradle,新建表,新建Entity,新增DAO,用来对User表的增查删改,新建数据库,进行数据库配置,获取dao对象,进行数据库的增查删改操作。 信息流的数据无限刷新,网络请求从服务端获取数据,冷启动,将数据用数据库存储保存在本地,直接从本地读取,解析和展示。