Android 我可以在实用程序类中存储AssetManager的引用吗?

Android 我可以在实用程序类中存储AssetManager的引用吗?,android,Android,我想创建一个实用程序类,用于加载资产/文件结构中包含的图像。要求所有对它的调用,或任何其他调用它的实用程序类,从UI一路传递上下文,这将是一件令人厌烦的事情 是否可以只传递一次并存储它(只要实用程序类是静态的或单例的)?还是会对记忆造成毁灭性的后果 而且,没有人会问,我使用的是assets/文件夹,而不是res/因为我想要子文件夹,并且动态地按名称访问图像,据我所知,使用资源无法做到这一点。例如,我希望我的精灵对象加载特定精灵文件夹中的所有图像,而不是硬编码R.drawable.sprite1f

我想创建一个实用程序类,用于加载资产/文件结构中包含的图像。要求所有对它的调用,或任何其他调用它的实用程序类,从UI一路传递上下文,这将是一件令人厌烦的事情

是否可以只传递一次并存储它(只要实用程序类是静态的或单例的)?还是会对记忆造成毁灭性的后果

而且,没有人会问,我使用的是assets/文件夹,而不是res/因为我想要子文件夹,并且动态地按名称访问图像,据我所知,使用资源无法做到这一点。例如,我希望我的精灵对象加载特定精灵文件夹中的所有图像,而不是硬编码R.drawable.sprite1front、R.drawable.sprite1leftside等


*编辑-复制AssetManager也可以,如果可以的话。

您可以为实用程序类使用单例或静态类,但是您应该使用对应用程序对象的引用而不是活动来初始化它。(保留对活动的引用是泄漏内存的好方法。)最好的方法可能是将应用程序子类化,并将其用作实用程序类。您必须在清单中声明您的应用程序类。

Hmm,这是一个很好的观点。我没有想到要保存对应用程序本身的引用,因为这将始终存在于实用程序类的生命周期中。实际上,它仍然让我感到困扰。看起来Android迫使你完全打破了基本的面向对象原则。我不想让实用程序类访问整个上下文或应用程序。它所需要的只是一种访问存储数据的方法。