Android中的Kotlin协程的使用

我正在尝试使用Kotlin Coroutines来获得更好的性能。

但是我不确定它是否是正确的使用方法,所以我希望有专家审查。

在用相机拍摄照片之后,我猜测屏幕是半秒停电。

原来的代码是,

fun uploadPhoto(data: Intent): Observable<Response> { val bitmap = data.extras.get("data") as Bitmap val bytes = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes) val baseDir = Environment.getExternalStorageDirectory() val file = File(baseDir, Calendar.getInstance().timeInMillis.toString() + ".jpg") val fileOutputStream = FileOutputStream(file) fileOutputStream.write(bytes.toByteArray()) fileOutputStream.close() return uploadMedia(file) } 

并阅读本教程后, https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html

我改变了,

 fun uploadPhoto(data: Intent): Observable<Response> { val baseDir = Environment.getExternalStorageDirectory() val file = File(baseDir, Calendar.getInstance().timeInMillis.toString() + ".jpg") launch { val bitmap = data.extras.get("data") as Bitmap val bytes = compressBitMap(bitmap).await() val fileOutputStream = FileOutputStream(file) fileOutputStream.write(bytes.toByteArray()) fileOutputStream.close() } return uploadMedia(file) } private fun compressBitMap(bitmap: Bitmap) = async(CommonPool) { val bytes = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes) return@async bytes } 

但我没有看到任何区别。

我想要做的事情是,我想要在后台运行压缩位图和fileOutputStream作业,以防止麻烦MainThread。

它是否有更好的表现?