请问能根据objectId缓存AVFile吗?

我这边有个需求, 把文件AVFile的objectId保存在本地数据库了, 然后读取数据库里面的文件列表, 展示出来, 这个时候我需要下载该AVFile, 这个时候好像需要请求两次

AVFile.withObjectIdInBackground(t.audioId, object : GetFileCallback<AVFile>() {
                        override fun done(avFile: AVFile?, p1: AVException?) {
                            p1?.printStackTrace()
                            avFile?.let {
                                avFile.getDataInBackground(object : GetDataCallback() {
                                    override fun done(byteArray: ByteArray?, p1: AVException?) {
                                        p1?.printStackTrace()
                                        byteArray?.let {
                                            playMp3(it)
                                        }
                                    }
                                })
                            }
                        }
                    })

withObjectIdInBackground访问了一次, 然后getDataInBackground又访问了一次呢. 我想请问下withObjectIdInBackground这个如何才能从缓存读取?

因为AVFile没有实线序列化接口, 我没法序列化保存

是的,需要请求两次,第一次请求 AVFile 对象,第二次请求文件数据。

getUrl 方法可以得到 AVFile 的 url 地址,这个是不可变的。可以在本地数据库保存这个 url,这样以后可以直接通过 url 获取文件。

如果我只保存avfile的url, 得自己实线文件下载吧 好像没有提供这种只输入url的下载接口? 有缓存的

没有提供这样的接口。

需要自行实现下载,或者找找看有没有什么第三方库。

我看了下 好像AVFileDownloader 只需要传入url就能从缓存中获取或者从网络中获取呢 不过是私有的类 没对外开放