Closed Tyeeee closed 1 week ago
另外我试了debug和release两中场景都会有上述问题。
你的疑问在于为什么会在打开 MatisseActivity 的过程中 LiveStreamingActivity 就执行了 onDestroyed 是吗?这可能是因为你测试用的手机配置调低,以及相册内图片视频太多,造成系统内存占用过大,导致不可见的 Activity 被销毁了
我刚刚将小米k70的电源模式调成了性能模式,依然还是会有这个问题。如果只是图片感觉还不至于这样,就在滑动到视频文件的时候,略有卡顿的时候看日志就会出现上一个页面被销毁了。不知道您有没有什么好的建议或者意见能有效避免或者尽量避免这种问题发生呢。
不确定原因的情况下我也没什么好的想法。你可以先这样来定位问题:Matisse 的 ImageEngine 你是可以自定义的,你可以通过修改 Glide 或者 Coil 等的配置参数,或者直接实现一个空的不加载任何图片/视频的 ImageEngine,看这些改动是否还会出现你说的这种情况。如果不会了,你就可以考虑通过自定义 ImageEngine 降低内存占用的方式来解决
好的,我试试看。 非常感谢。
我照猫画虎写了一个自定义的engine,不过编译之后一直报错,估计是compose和kotlin之间有些冲突,我是的1.9.25,compose我按照文档写的是1.5.15. 奈何时间有限,我换成ciol试了试没有glide的问题。暂时先用coil来加载这个媒体列表页,后面找时间我再研究一下自定义的方式。
好咧,有问题的话可以再来反馈
您好,我发现CoilEngine虽然没有之前的问题,但多媒体列表里面多媒体不展示第一帧预览图了,看来问题的根源就是这个视频的第一帧导致的。如果我想展示第一帧的话是不是也只能通过自定义engine才能处理呢?
是的,Matisse 将所有图片和视频的加载逻辑都交由 ImageEngine 实现,内部不做控制。但 Coil 应该默认就是展示第一帧的图片才对:https://coil-kt.github.io/coil/videos/。你这也许也是遇到了 coil 的 bug 了
它这个bug出现的倒是挺是时候,确定了就是加载视频item才出现之前的问题。我看来还是绕不过去这个自定义engine的问题。 @Stable interface ImageEngine : Parcelable {
/**
* 加载缩略图时调用
*/
@Composable
fun Thumbnail(mediaResource: MediaResource)
/**
* 加载大图时调用
*/
@Composable
fun Image(mediaResource: MediaResource)
} 我还有个问题和您咨询一下,当我开启MatisseActivity页面后,列表中的预览图显示对应的应该是Thumbnail方法吧?Image方法是在点击列表item弹出真正的预览页面的时候才会触发吗?
是的,Image 只用于预览大图时使用
好的,非常感谢。
这compose第一次接触,历经坎坷在自定义engine中把缓存策略调整一下可以避免这个问题。
你是设置不在内存缓存图片,还是设置了降低图片质量吗?方便的话说下设置方式,方便后续其他人可以参考下
我的测试集中包含了图片与视频两部分媒体内容。打开MatisseActivity后: ---->onPaused:LiveStreamingActivity ---->onCreated:github.leavesczy.matisse.internal.MatisseActivity ---->onStarted:github.leavesczy.matisse.internal.MatisseActivity ---->onResumed:github.leavesczy.matisse.internal.MatisseActivity ---->onStopped:LiveStreamingActivity ---->onSaveInstanceState:LiveStreamingActivity 如果我滑动媒体列表的幅度比较小,速度比较慢,或者常规速度滑动媒体列表中视频item不是首次加载,这过程中不会触发任何生命周期事件,不选择任何媒体文件返回后: ---->onPaused:github.leavesczy.matisse.internal.MatisseActivity ---->onStarted:LiveStreamingActivity ---->onResumed:LiveStreamingActivity ---->onStopped:github.leavesczy.matisse.internal.MatisseActivity ---->onDestroyed:github.leavesczy.matisse.internal.MatisseActivity 如果我滑动媒体列表速度比较快,或者常规速度滑动媒体列表中视频item首次加载时,滑动过程中: onDestroyed:com.LiveStreamingActivity 返回后: ---->onPaused:github.leavesczy.matisse.internal.MatisseActivity ---->onCreated:LiveStreamingActivity ---->onStarted:LiveStreamingActivity ---->onResumed:LiveStreamingActivity ---->onStopped:github.leavesczy.matisse.internal.MatisseActivity ---->onDestroyed:github.leavesczy.matisse.internal.MatisseActivity 不知道您对这个问题有没有什么看法,期待您的回复,谢谢。