高效易用的IO库【Okio应用篇】
OkHttp是Android中包含的功能强大的HTTP客户端,此框架平时用的还挺多的,但是今天的主角是OkHttp的低层IO库——Okio,Okio是对java.io和java.nio的补充,使访问、存储和处理数据变得更加容易。 这里是它的官网: https://square.github.io/okio/ , 最开始它作为OKHttp的一个组件,现在可以独立使用它来解决一些IO问题,接下来的内容来自对Okio官网的文档以及一些代码示例。
OkHttp是Android中包含的功能强大的HTTP客户端,此框架平时用的还挺多的,但是今天的主角是OkHttp的低层IO库——Okio,Okio是对java.io和java.nio的补充,使访问、存储和处理数据变得更加容易。 这里是它的官网: https://square.github.io/okio/ , 最开始它作为OKHttp的一个组件,现在可以独立使用它来解决一些IO问题,接下来的内容来自对Okio官网的文档以及一些代码示例。
在Android中使用HTTPS的场景比较频繁,所以对于HTTPS的证书应该如何校验呢?关于HTTPS的校验原理可以参考我之前写的一篇文章: 《 HTTPS协议实现原理 》 ,相信看完后应该对HTTPS有一个比较大致的了解。而且对HTTP(s)请求的工具进行了封装,需要体会这种封装工具类的思路,也就是编码中常见的Listener机制。然后是Android中TCP、UDP通信的例子,主要是把Android设备作为Client端,如果对Java的Socket编程比较熟悉的话,这些都是特别简单的示例程序,非常容易看懂。
为什么微信、QQ、淘宝等App都能访问联系人(通讯录)呢?是因为Android存在一种应用之间的数据共享机制,即ContentProvider,ContentProvider作为Android四大组件之一,为存储和获取数据提供统一的接口,可以在不同的应用程序之间共享数据。对于ContentProvier而言,无论数据的来源是什么,它都认为是种表(同时也支持文件数据,只是表格形式用得比较多),然后把数据组织成表格返回给使用者。
在Android 中,一个进程通常无法访问另一个进程的内存。因此为了进程间通信,Android提供了AIDL机制,AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写,AIDL的作用是可以在自己的App里绑定一个其他App的Service,这样App可以通过AIDL与其他App进行交互。
服务作为Android四大组件之一,是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。需要注意的是服务并不会自动开启线程,所有的代码都是默认运行在主线程当中的,所以需要在服务的内部手动创建子线程,并在这里执行具体的任务,否则就有可能出现主线程被阻塞住的情况。
Application是维护应用全局状态的基类,Android系统会在启动应用进程时创建一个对应的Application对象。所以当我们需要创建全局变量的时候,不需要再像Java那样需要创建public权限的static变量,而直接在Application中去实现。其他组件只需要调用Context的getApplicationContext或者getApplication(在Activity中)来获得一个Application对象,再做出相应的处理。
本篇文章记述了Android的四大组件之一 —— BroadcastReceiver(广播接收者)。广播的作用、广播注册的方式、自定义广播、广播的类型以及在较新的Android系统中使用BroadcastReceiver需要注意的问题。Android 应用与 Android 系统和其他 Android 应用之间可以相互收发广播消息,这与发布-订阅设计模式相似,这些广播会在所关注的事件发生时发送出去。
SQLite是一个开源的关系型数据库,实现自包容、零配置、支持事务的SQL数据库引擎。其特点是高度便携、使用方便、结构紧凑、高效、可靠。并且SQLite是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。 本篇文章书要是记述了SQLite的基本架构以及SQLite的几种操作方式,其中比较重要的就是ADB Shell命令操作与SQL语句,另外在开发中还是Litepal这款开源ORM框架用的比较多一些,使用起来确实非常方便。