我正在使用MVVM架构的改进来获取图像.现在我想添加一些功能,如图像编辑或压缩和上传.
我的问题是.对于MVVM体系 struct ,这些特性的业务逻辑是一个用例吗?
-
领域
- 使用 case
-
用户界面
- ImageCompressionViewModel.千吨级
- 图像压缩片段.千吨级
- 上载ImageViewModel.计算机断层扫描
- 上载ImageFragment.计算机断层扫描
我的大脑说这是用例,但我有点犹豫:)
ImageCompressionUseCase.kt
@Singleton
class ImageCompressionUseCase @Inject constructor(@ApplicationContext private val context: Context) {
suspend operator fun invoke(name:String) : Result<File> = runCatching {
withContext(Dispatchers.IO){
val output = File(context.filesDir,"$name.png")
// some logic to image compression
output
}
}
}
ImageCompressionViewModel.千吨级
@HiltViewModel
class ImageCompressionViewModel @Inject constructor(private val imageCompressionUseCase: ImageCompressionUseCase) : ViewModel() {
private val _isLoading = MutableLiveData<Boolean>()
val isLoading get() = _isLoading
private val _data = MutableLiveData<Result<File>>()
val data get() = _data
fun start(){
viewModelScope.launch {
_isLoading.value = true
_data.value = imageCompressionUseCase("example_name")
_isLoading.value = false
}
}
}