【问题标题】:Filtered Twitter Stream API consume in Android app using Retrofit and coroutine使用 Retrofit 和协程过滤的 Twitter 流 API 在 Android 应用程序中使用
【发布时间】:2021-10-20 06:46:37
【问题描述】:

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

【问题讨论】:

    标签: android kotlin twitter retrofit coroutine


    【解决方案1】:

    首先你需要在你的app build.gradle 文件的依赖部分中导入retrofit 和kotlinx_coroutine_android。

    然后在编码数据类和响应模型部分后,您需要在接口中定义api函数,但请记住使用'suspend'而不是回调,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2014-08-09
      • 2019-07-25
      • 2016-08-01
      • 1970-01-01
      相关资源
      最近更新 更多