android - 使用 Retrofit 和协程过滤的 Twitter 流 API 在 Android 应用程序中使用
问题描述
我想在 android 应用程序中使用过滤后的 Twitter V2 流。但无法理解如何使用改造和协程来实现这一点。请帮忙
解决方案
首先,您需要在应用程序 build.gradle 文件的依赖部分中导入改造和 kotlinx_coroutine_android。
然后在对数据类和响应模型部分进行编码之后,您需要在接口中定义 api 函数,但请记住使用“挂起”而不是回调,如下所示:
interface ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}
然后您可以在存储库中的挂起函数中获取 api 响应,如下所示:
class MainRepository(private val apiHelper: ApiHelper) {
suspend fun getUsers() = apiHelper.getUsers()
}
然后在 viewmodel 中从存储库中获取数据,如下所示:
class MainViewModel(private val mainRepository: MainRepository) : ViewModel() {
fun getUsers() = liveData(Dispatchers.IO) {
emit(Resource.success(data = mainRepository.getUsers()))
}
}
(尝试使用更多状态来控制加载和错误,甚至使用 try/catch 块来控制错误)
最后,在您的 UI 中观察请求响应,如下所示:
viewModel.getUsers().observe(this, Observer {
it?.let { resource ->
recyclerView.visibility = View.VISIBLE
progressBar.visibility = View.GONE
resource.data?.let { users -> retrieveList(users) }
}
}
})
我假设您知道请求 Web 服务的完整过程,然后我只是解释了使用回调和使用挂起函数之间的区别。如果还不够清楚,请给我发消息解释更多。
推荐阅读
- c - 使用 PCF8574T I2C 背包将数据从 TI TM4C123GH6PM 发送到 HD4478 LCD
- android - android ColorMatrix:更改矩阵时查看实时颜色的任何工具
- java - 如何为 TestNg Java 设置 SauceLabs
- javascript - 有没有办法我们可以在警报框中有一个滑块(范围输入)
- android - Android:使用 STOMP 协议构建实时聊天的问题
- python - 使用 python Pandas 填充缺失字段 csv 的更简单方法
- scons - 根据编译的文件改变 CPPPATH
- python - 没有足够的值来解压
- android - Android TextView 多行有额外空间
- java - 如何在流API Android Java的lamba表达式中使用File数组编写复杂的if条件