liangjingkanji / Net

Android 基于协程/OkHttp网络请求工具
http://liangjingkanji.github.io/Net/
MIT License
1.8k stars 209 forks source link

上传大文件内存溢出 #199

Closed mmmoon66 closed 10 months ago

mmmoon66 commented 10 months ago

问题描述

上传大文件内存溢出导致应用Crash

期望行为

大文件能够正常上传成功

如何复现

截图

image image

异常堆栈信息或者手机截图/视频(拖拽到输入框即可上传)

版本

liangjingkanji commented 10 months ago

你看下是不是 #174 问题, 但是我认为你应该不至于线上项目开通知栏日志吧

我实测上传或下载3gb都没问题

liangjingkanji commented 10 months ago

我千辛万苦改成协成同步请求, 你给改回Flow接口回调, 你图的什么?

liangjingkanji commented 10 months ago

我看到你线上环境你有使用HttpLoggingInterceptor, 这个日志拦截器会输出文件内容导致oom, 和Net无关

image
mmmoon66 commented 10 months ago

174

你看下是不是 #174 问题, 但是我认为你应该不至于线上项目开通知栏日志吧

我实测上传或下载3gb都没问题

多谢了,确实是开启了OKHttp日志导致的。线上日志是关闭的,这个是debug包遇到的问题...

mmmoon66 commented 10 months ago

我千辛万苦改成协成同步请求, 你给改回Flow接口回调, 你图的什么?

项目组的开发规范,不让直接在Fragment里直接引用DataSource, 只能通过Repository暴露suspend方法或者flow,再通过ViewModel暴露给Fragment...

liangjingkanji commented 10 months ago

你们工资应该是按行数算的吧

mmmoon66 commented 10 months ago

你们工资应该是按行数算的吧

这不是google推的一套架构吗,项目组的同学都严格按照这个套路来开发,上手也比较容易,review也比较容易。不然大家都随心所欲地按自己喜好开发,不就乱套了吗...

liangjingkanji commented 10 months ago

少写点才是真, 按照规范开发也不是写一堆无效代码, 你们这么厚重的代码量很难review, 加个接口要review好几个文件

你看BRV的demo才多少代码量, 我感觉安卓开发者喜欢套别人模板, 不喜欢思考收益

个别安卓写个请求比后端写个接口还复杂

liangjingkanji commented 10 months ago

我早期写安卓的时候就很反感一堆人去封装大量请求方法, 每个接口或者网络请求框架都要写getXX, postXX

所以文档都要求全部使用Post<Data>(Api.PATH)形式, 个别复用率极高的才建议HttpUtils.getUserInfo()

任何异步任务都建议使用协程写同步代码, 除非是监听数据库这种形式才写接口回调

liangjingkanji commented 10 months ago

什么年代了还写一堆接口回调处理异步任务, "安卓返祖现象"

前端/后端客/户端谁还写接口回调网络请求