在这种情况下,如何用RxJava替换AsynTask
我有一个类可以减少映像,但我目前正在使用AsyncTask,现在我想替换它,因为AsyncTask现在已不推荐使用。那么有人能帮我解决这个问题吗 这是我的密码:在这种情况下,如何用RxJava替换AsynTask,java,android,kotlin,android-asynctask,rx-java2,Java,Android,Kotlin,Android Asynctask,Rx Java2,我有一个类可以减少映像,但我目前正在使用AsyncTask,现在我想替换它,因为AsyncTask现在已不推荐使用。那么有人能帮我解决这个问题吗 这是我的密码: class DecreaseImageTask( val uri: Uri? = null, val bitmap: Bitmap? = null, var context: Context, var listener: (String?) -> Unit ) : AsyncTask<Void
class DecreaseImageTask(
val uri: Uri? = null,
val bitmap: Bitmap? = null,
var context: Context,
var listener: (String?) -> Unit
) : AsyncTask<Void, Long, String?>() {
override fun doInBackground(vararg params: Void?): String? {
return when {
uri != null -> {
decreaseImageSize(imagePath = FileUtils.getPathURI(context, uri) ?: "")
}
bitmap != null -> {
decreaseImageSize(bitmap = bitmap)
}
}
}
override fun onPostExecute(result: String?) {
super.onPostExecute(result)
listener(result)
}
}
类递减ImageTask(
val uri:uri?=null,
val位图:位图?=null,
var-context:context,
变量侦听器:(字符串?->Unit)
):AsyncTask(){
重写fun doInBackground(vararg参数:Void?):字符串{
何时返回{
uri!=null->{
减小ImageSize(imagePath=FileUtils.getPathURI(上下文,uri)?:“”)
}
位图!=null->{
减小图像大小(位图=位图)
}
}
}
重写onPostExecute(结果:字符串?){
super.onPostExecute(结果)
监听器(结果)
}
}
您可以更改decreaseImageSize
以接受回调作为参数。在这种情况下,函数将不再需要返回字符串,该字符串作为参数传递给回调函数,然后用作 其主体中的参数:
fun decreaseImageSize(imagePath: String? = null, bitmap: Bitmap? = null, callback: (String) -> Unit) {
...
val result = "" // The result of the previous decreaseImageSize function
callback(result)
}
然后,不要调用AsyncTask
,而是使用新的decreaseMageSize
函数:
decreaseImageSize(imagePath = FileUtils.getPathURI(context, uri) ?: "") { result ->
// Execute the code after the image is decreased
}
decreaseImageSize(bitmap = bitmap) { result ->
// Execute the code after the image is decreased
}