Android - 可以为静态成员和方法使用自定义 class 而不是扩展应用程序 class

Android - Is it OK to use a custom class for static members and methods instead of extending an Application class

在我的应用程序中,我将所有全局使用的变量和方法放在一个单例中 Application class。可以正常使用,但是代码看起来很乱,很难在其他项目中重用,因为变量和方法是不同用途的,比如网络操作,内存管理或其他一些项目相关的东西。

是否可以将变量和方法拆分为不同的 classes,并改为调用静态方法,同时在 Application 单例中表现相同 class?

是可以的,但是做的时候要慎重考虑。

例如Picasso 使用了这种方法

是的。可以像往常一样在 Java 代码中随意使用静态等,将 Android 生命周期考虑在内(包括进程终止和静态值消失的时间)。

也就是说,任何类型的全局状态都有问题,主要是围绕令人惊讶的复杂性和隐藏行为。有很多方法可以缓解这种情况,它们并不是 Android.

独有的

一种可以使事情更易于管理的解决方案是使用依赖注入和 @Singleton 指定 - 依赖注入有其自己的一组权衡,但我认为这是一个净赢。查看 Dagger,这是我所知道的针对 Android.

优化的最佳公开可用 DI 框架