我参与了Android应用程序的开发,这是一个相当"厚"的Web服务移动客户端.它与服务器进行大量通信,但也有很多内部逻辑.所以,我决定使用Google Guava库的一些特性来简化开发过程.下面是我非常感兴趣的特性列表:不可变集合、基本UTIL、集合扩展、函数编程糖和习惯用法(common.collectcommon.base)、原语实用程序(common.primitives)、哈希实用程序(common.hash)、并发UTIL(future 和AsyncFunction).我想在Android中使用的东西有:common.cache(见下面的问题)、common.eventbus(我们有更好的特定于Android的LIB,比如Otto)、common.io(我们现在可以在Android中使用okio).

我读到使用Guava for Android会显著减慢编译过程,还会降低整个运行时性能: Bad performance with Guava Cache on Android(在这种情况下是合理的,不需要为Android使用Guava的缓存)和 Adding Google Guava to Android project - significantly slows down the build

那么,在Android项目中使用Guava库是否有效,或者该库仅用于服务器端开发,我应该使用标准解决方案?任何解释都将不胜感激.

推荐答案

(太大了,无法 comments ,所以我贴了一个答案.)就我个人而言,当我没有significant and properly profiled个性能问题时,我在每个Java项目中都使用整个Guava库.例如,如果您确实有内存方面的问题,比如在Android环境中,您可以使用ProGuard来只获取您真正需要的番石榴的这些部分.

此外,there are many Android apps using Guava家——不仅仅是小公司,比如谷歌搜索和Youtube,它们直接来自谷歌.

(你也应该看到compatibility note.)

Android相关问答推荐

在Android Studio Iguana上运行示例代码时,Gradle Build错误

Android Compose Lazy柱形实时UI更改

无法安装后重新编译android代码'

房间@嵌入式VS一对一关系

在androidStudio中,如何使用带有ResolutionStrategy的ResolutionSelector而不是setTargetResolve()?

返回并再次打开webview时webview无法打开相机

是否可以在 compose 中使用三次贝塞尔曲线进行动画?

如何在 Jetpack Compose 中对数据类进行 Parcelize

如何仅同步 local_manifest.xml?

Android Studio:按下前缀键:切换 Logcat 格式

在移动设备上看到时如何增加 PasswordField 文本?

如何将一个 Composable 作为其参数传递给另一个 Composable 并在 Jetpack Compose 中显示/运行它

如何在 Jetpack Compose 中添加多个标签

Android:appcompat 和 material 如何从默认创建 appcompat 和 material 视图?

清洁架构中的服务

CenterAlignedTopAppBar 滚动行为:未为参数状态传递值

为什么在try 实例化 Mediaplayer 时会出现 NullPointerException?安卓Kotlin

如何使在库范围之外无法访问的接口的具体实现.?

OpenGLES,为什么 glReadPixels() 不能从 FBO 的 Renderbuffer 的 colored颜色 缓冲区中读取数据?

MpAndroidChart:在轴的末尾添加一个箭头