更好的解决方案是,可以为三个屏幕创建三个repo,并拆分API调用。
如果您使用的是sharedViewModel概念,那么您可以在代码中选择选项a。因为sharedViewModel只有一个实例,用于三个屏幕。
class VideoRepository {
val recommendedRestaurants: LiveData<List<Restaurant>> = ...
val searchResultsRestaurants: LiveData<List<Restaurant>> = ...
val visitedRestaurants: LiveData<List<Restaurant>> = ...
fun getRecommendedRestaurant() {
RestaurantRetrofitClient.getRecommendedRestaurant()
}
fun getRestaurantsUsingFilter() {
RestaurantRetrofitClient.getRestaurantsUsingFilter()
}
fun getVisitedRestaurants() {
RestaurantRetrofitClient.getVisitedRestaurants
}
}
如果您能够使用liveData处理数据,您可以选择选项B
class VideoRepository {
val restaurants: LiveData<List<Restaurant>> = ...
fun getRecommendedRestaurant() {
RestaurantRetrofitClient.getRecommendedRestaurant()
}
fun getRestaurantsUsingFilter() {
RestaurantRetrofitClient.getRestaurantsUsingFilter()
}
fun getVisitedRestaurants() {
RestaurantRetrofitClient.getVisitedRestaurants
}
}