gpt4 book ai didi

android - 将 Retrofit 实例保存在内存中是一种好习惯吗?

转载 作者:搜寻专家 更新时间:2023-11-01 07:45:07 24 4
gpt4 key购买 nike

我应该缓存 Retrofit 生成的对象还是建议动态创建?

我开始逐步从一个旧的网络框架迁移到 Retrofit,它从一个非常基本的逻辑开始,以缓存 Retrofit 创建的实例。这是由于我们的架构将在不同的 Activity/fragment 中使用不同的端点,当用户访问应用程序的不同部分时将调用此方法:

static public <T> T getApi(Class<T> apiInterface) {
validateInitialization("getApi()");

if (!mApis.containsKey(apiInterface.getSimpleName())) {
mApis.put(apiInterface.getSimpleName(), retrofit().create(apiInterface));
}

return (T) mApis.get(apiInterface.getSimpleName());
}

然而,随着我们继续迁移我们的模式以使用 Retrofit,该映射的大小正在增加(目前可以创建大约 20 个不同的接口(interface)/api)并且有时包含不再使用的实例。

最佳答案

我会说答案是“视情况而定”。

缓存 Retrofit 固有的这些对象没有缺点(据我所知);这些服务对象不会大量消耗设备的电池生命周期或类似古怪的东西。

相反,它归结为您希望避免的缺点:不会被再次使用但不能被垃圾收集的服务对象可能消耗“额外”内存,或者可能导致“缓慢”通过为每次调用创建一个新的服务对象。唯一的选择方法是分析您的应用和用户的行为/偏好,然后决定您更愿意选择哪种方式。

根据我的个人经验,我并不担心动态创建新服务对象的性能成本。我从未注意到这样做会导致我的应用速度出现任何可察觉的差异。

一般来说,我建议不要在您有问题的证据之前进行优化。我没有证据表明 Retrofit.create() 对于我的用例来说太慢了,所以我每次都即时调用它。

关于android - 将 Retrofit 实例保存在内存中是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46291651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com