Android---基础篇4|青训营笔记

80 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天 哈喽啊家人们,今天我又来写笔记咯,上一篇我们介绍了Android常用的界面组件。那么今天我们就来学学Android的网络通信和数据存储。那我们就开始吧!

背景:信息流可以无限刷新(去服务端请求) 冷启时,快速展现信息流内容(本地存储请求)

网络通信

  • HttpURLConnection:Android SDK
  • Volley:Google,应用于数据量小
  • OkHttp:square,支持大文件传输,拦截器设置
  • Retrofit:square,具备OkHttp的所有优点,更强大

Retrofit

Android平台最热门的框架

使用

引用Retrofit库
创建网络请求接口
使用Retrofit发起网络请求

  1. 新增Retrofit依赖
dependencies{
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
}
  1. 创建网络请求接口
interface IUserInfoService{
    //使用get请求
    @Get("user/{uid}/name")
    fun getUserName(@Path("uid") uid:int): Call<ResponseBody>
    //一个接口对应一个api请求
}

@GET注解:该接口的相对路径,并采用Get方法发起请求
@Path注解:传入一个uid,该uid会 替换@GET注解里相对路径的{uid}
返回值Call:这里用ResponseBody,我们可以直接拿到请求的String内容
3.

TTNET

基于Retrofit改造,具有Retrofit的所有优点

注解

  • @Override:重写父类的实现
  • Nullable:对象可能为空
  • @Get:请求方法
  • @Path:路径
    总结
    图片引用于字节跳动Android基础课程 image.png

数据存储

数据存储方式

持久性的本地数据存储

  • SharedPrefernces
    • 只能存放Boolean、int、float、long、String5种类型
    • 键值对方式存储
  • 文件存储
    • 各种格式的文件
    • 不能跨APP共享
  • ContentProvider
    • 可共享
    • URI进行对象访问
  • SQLite存储数据
    • 存储结构化数据
    • 进行数据增删改查

数据库框架对比

引用于字节跳动青训营Android基础课程 image.png

Room数据库使用介绍

Room在SQLite上提供了一个抽象层 三大组件

  1. 数据库类(Database)
  2. 数据实体(Entity)
  3. 数据访问对象(DAO)

使用案例

Room接入: 在Gradle目录中的build.gradle文件里添加如下代码:

dependencies{
    def room_version = "2.4.2"
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"//注解处理器
}

创建一个User数据表

@Entity
data class User(
    @PrimaryKey(autoGenerate = true) val uid:int?,
    @ColumnInfor(name = "first_name") val firstName: String?,
    @ColumnInfor(name = "lastt_name") val lastName: String?
)

创建DAO

@Dao
interface UserDao{
    //查询全部用户
    @Query("select * from user")
    fun getAllUser() : List<User>?
    
    //新增用户
    @Insert
    fun insertAllUser(vararg users: User) 
    
    //删除用户
    @Delete
    fun deleteUser(users : User)
}

新建数据库

@Database(entities = [User::class],version = 1)
abstract class AppDatabase : RoomDatabase(){
    abstract fun userDao(): UserDao
}

进行增删改查 图片引用于字节跳动Android基础课程

image.png

Room数据库原理介绍

  1. 编译期,通过kapt处理@Dao、@Database等注解,生成对应的实现类
  2. 低层使用的是Android提供的SupportSQLiteOpenHelper实现数据库增删改查等操作

图片引用于字节跳动Android基础课程 image.png