【发布时间】:2020-10-01 04:25:45
【问题描述】:
在我的 Android Kotlin 项目中,我在协程中调用了一个 Web 服务(myWebservice 只是一个管理 Web 服务调用的自定义类):
fun searchForItems(userInput: String)
{
CoroutineScope(Dispatchers.IO + Job()).launch {
val listOfItems = myWebService.call(userInput)
}
}
每当用户在EditText 中键入字符时,都会调用该方法,因此应用程序会调用一个 Web 服务,该服务会返回与他的请求匹配的项目列表。但我想优化它。
假设用户输入了单词:“apple”。为了尽量减少webservice调用的次数,下面是我想要实现的:
- 当用户键入第一个字母 (a) 时,将调用 Web 服务
- 当用户输入下一个字母时,只要第一个调用没有返回,就没有新的 Web 服务调用(假设他有足够的时间输入下一个字母 (pple))
- 当第一次 web 服务调用完成时,新的调用会自动使用新的用户输入(苹果)完成
实现这一目标的最佳做法是什么? 或者有没有更好的方法来减少 Web 服务调用的次数?
谢谢。
【问题讨论】:
标签: android kotlin kotlin-coroutines debouncing