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。
它是否有更好的表现?