首页 > 解决方案 > 使用 Retrofit 和协程过滤的 Twitter 流 API 在 Android 应用程序中使用

问题描述

我想在 android 应用程序中使用过滤后的 Twitter V2 流。但无法理解如何使用改造和协程来实现这一点。请帮忙

标签: androidkotlintwitterretrofitcoroutine

解决方案


首先,您需要在应用程序 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 服务的完整过程,然后我只是解释了使用回调和使用挂起函数之间的区别。如果还不够清楚,请给我发消息解释更多。


推荐阅读