这是我参与「第四届青训营 」笔记创作活动的第3天
registerForActivityResult的学习
registerForActivityResult(ActivityResultContract, ActivityResultCallback)这个方法要求我们传递ActivityResultContract和ActivityResultCallback两个参数,同时会返回给我们一个ActivityResultLauncher对象,我们可以使用这个对象去进行Activity跳转。
1、常见用法:
FirstActivity内
val register = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result -> if(result.resultCode == RESULT_OK) {
val id = result.data?.getStringExtra("data_return")
Log.d("FirstActivity", "returned data is $id")
}
}
button1.setOnClickListener {
val intent = Intent(this,SecondActivity::class.java)
register.launch(intent)
}
SecondActivity内
button2.setOnClickListener {
val intent = Intent()
intent.putExtra("data_return","Hello FirstActivity")
setResult(RESULT_OK,intent)
finish()
}
网络请求的框架
-
HttpURLConnection- 特点:需要自己做封装,例如线程池管理、返回的数据解析
- 使用场景:只有少量网络请求的工具类App
-
Volley- 特点
- 适合网络请求频繁,传输数据量小
- 不适合用来上传文件和下载
- 已停更
- 使用场景:之前使用volley,且无需大文件下载的App
- 特点
-
OkHttp- 特点
- 可以设置拦截器,支持大文件上传和下载
- OkHttp 基于NIO和Okio,性能更好
- -般需要二次封装使用
- 使用场景:一般比较少直接使用,可搭配Volley或Retrofit
- 特点
-
Retrofit- 特点:具备OkHttp所有的优点,且更出色
- restful api设计风格
- 通过注解配置请求,包括请求方法、请求参数、请求头、返回值等。
- 可以搭配多种Converter将获得的数据解析,支持Gson、jackson、Protobur等
- 使用场景:团队内有研发人员对Retrofit比较熟悉时可用
- 特点:具备OkHttp所有的优点,且更出色
数据存储方式
-
SharedPreferences- 特点
- 只能存boolean、int、float、long、String 5种简单类型
- 键值对存储
- 使用场景:记录app的各种配置信息,例如用户自己切换的开关、服务端下发的某个配置等
- 特点
-
文件存储
- 特点
- 可以存各种格式的文件到手机中
- 默认情况下文件不能跨app共享
- 使用场景
- 网络下载的zip包
- txt文件的存储
- 特点
-
ContentProvider- 特点
- 可跨App进行数据共享
- 通过Uri对下进行访问
- 使用场景:音频、视频、图片、通信录的读写
- 特点
-
SQLite存储数据- 特点:具备OkHttp所有的优点,且更出色
- 可存储结构化数据
- 对数据进行增删改查较为方便
- 使用场景:保存feed流数据,并进行增删改查
- 特点:具备OkHttp所有的优点,且更出色