【发布时间】:2021-07-27 16:30:23
【问题描述】:
我正在使用改造、协程、livedata、mvvm、...
我想在从服务器获取数据几秒钟之前显示进度条
如果我有一个 api 请求,我可以显示,但在这个应用程序中我有多个请求
在这种情况下我应该怎么做我应该如何显示进度条??
API 服务
@GET("homeslider.php")
suspend fun getSliderImages(): Response<List<Model.Slider>>
@GET("amazingoffer.php")
suspend fun getAmazingProduct(): Response<List<Model.AmazingProduct>>
@GET("handsImages.php")
suspend fun getHandsFreeData(
@Query(
"handsfree_id"
) handsfree_id: Int
): Response<List<Model.HandsFreeImages>>
@GET("handsfreemoreinfo.php")
suspend fun gethandsfreemoreinfo(): Response<List<Model.HandsFreeMore>>
@GET("wristmetadata.php")
suspend fun getWristWatchMetaData(
@Query(
"wrist_id"
) wrist_id: Int
): Response<List<Model.WristWatch>>
存储库
fun getSliderImages(): LiveData<List<Model.Slider>> {
val data = MutableLiveData<List<Model.Slider>>()
val job = Job()
applicationScope.launch(IO + job) {
val response = api.getSliderImages()
withContext(Main + SupervisorJob(job)) {
data.value = response.body()
}
job.complete()
job.cancel()
}
return data
}
fun getAmazingOffer(): LiveData<List<Model.AmazingProduct>> {
val data = MutableLiveData<List<Model.AmazingProduct>>()
val job = Job()
applicationScope.launch(IO + job) {
val response = api.getAmazingProduct()
withContext(Main + SupervisorJob(job)) {
data.value = response.body()
}
job.complete()
job.cancel()
}
return data
}
fun getHandsFreeData(handsree_id: Int): LiveData<List<Model.HandsFreeImages>> {
val dfData = MutableLiveData<List<Model.HandsFreeImages>>()
val job = Job()
applicationScope.launch(IO + job) {
val response = api.getHandsFreeData(handsree_id)
withContext(Main + SupervisorJob(job)) {
dfData.value = response.body()
}
job.complete()
job.cancel()
}
return dfData
}
fun getHandsFreeMore(): LiveData<List<Model.HandsFreeMore>> {
val data = MutableLiveData<List<Model.HandsFreeMore>>()
val job = Job()
applicationScope.launch(IO + job) {
val response = api.gethandsfreemoreinfo()
withContext(Main + SupervisorJob(job)) {
data.value = response.body()
}
job.complete()
job.cancel()
}
return data
}
视图模型
fun getSliderImages() = repository.getSliderImages()
fun getAmazingOffer() = repository.getAmazingOffer()
fun recieveAdvertise() = repository.recieveAdvertise()
fun dailyShoes(context: Context) = repository.getDailyShoes(context)
感谢您的帮助
【问题讨论】:
-
如果你有3个api请求,在不同的地方,你可以有3个进度条
-
我有 4 个主要片段。家庭组合篮简介,我每个人至少有 4 个 api。我想在从服务器获取所有数据之前显示进度条。例如,当您启动应用程序时,您只会看到一个空白片段中的进度条,然后在几秒钟后,所有回收器和视图都会出现@Ticherhaz FreePalestine