上传图像不起作用。 它有内存问题。
当我调用API时,我的应用程序停止了。然后多次调用GC,并抛出TimeOut异常。
我考虑过使用Bitmap.Compress
压缩图像文件,但是调用compress
也需要大量内存。
我不知道上传图像的最佳方法是什么。 你们可以帮我吗?
这是ApiInterface
。
@Multipart
@POST("memo/update")
fun updateMemo(
@Header("token") token: String,
@Part("content") content: RequestBody,
@Part("location") location: RequestBody,
@Part("id") id : RequestBody,
@Part imgFile: MultipartBody.Part?)
: Observable<JsonObject>
此方法返回MultiPart.Body
。
private fun toMultipartBody(uri: Uri?): MultipartBody.Part? {
uri?.let {
val file = File(it.path)
val requestFile = RequestBody.create(MediaType.parse("image/*"), file)
return MultipartBody.Part.createFormData(memo::memoFile.name, file.name, requestFile)
}
return null
}
这是一个方法调用API。
private fun updateMemo() {
disposables.add(
service.updateMemo(
TipTapApplication.getAccessToken(),
toRequestBody(memo.content),
toRequestBody(memo.location),
toRequestBody(memo.latitude),
toRequestBody(memo.longitude),
toRequestBody(memo.id.toString()),
toMultipartBody(imgUri))
.subscribeOn(Schedulers.io())
.subscribeWith(object : DisposableObserver<JsonObject>() {
override fun onNext(t: JsonObject) {
}
override fun onComplete() {
finish()
}
override fun onError(e: Throwable) {
e.printStackTrace()
}
}))
}