Загрузить изображение не работает.У него проблема с памятью.
Когда я вызываю 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()
}
}))
}