我有一个非常大的项目,恰好需要能够在Activity类之外定期访问Activity Context,而该项目只有一个实例。我已经做了很多研究,试图完善代码,但是似乎并没有一种在需要时访问上下文和/或活动的好方法。它不能存储在其他类中,也不应该传递,因为两者都可能导致内存泄漏。但是,可以将上下文和对活动的引用静态存储在活动类本身中吗?如果活动被销毁,上下文/引用也将消失,因此应该不会有问题,就像存储应用程序上下文时的情况一样。
我的主要问题是,我有数百个(即使不是数千个)随机对象,例如纹理,子画面,网格,脚本等,这些对象有时不仅需要上下文(例如加载和重新着色),而且还需要可以在使用ViewModel进行配置状态更改时保留/重构,而我想保留面向对象的性质,而不是将所有内容都放在一个地方(即活动)。我要存储的大多数数据是模型数据,而不是View数据,因此将其保留在View中会破坏整个OO模型的分离。因此,我试图使每个类的生命周期都得到了解,但是我需要活动参考来做到这一点:
public class RendererActivity extends AppCompatActivity
{
static Context activityContex = null;
static RendererActivity activityReference = null;
...
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
activityContext = this;
activityReference = this;
}
}
class Texture
{
static List textureList = null;
Texture( )
{
// check if list allocated
if(textureList == null) textureList = ViewModelProviders.of(RendererActivity.ActivityReference).get(Texture.List.class);
...
}
public class List extends ViewModel
{
...
}
}
这似乎可以很好地工作,并且可以保持OO模型的清洁。我只是不知道在Android框架下这样做是一件好事。我没有注意到任何内存泄漏,但这是我担心的潜在问题。任何想法和/或建议将不胜感激。