可以在自己内部静态存储活动上下文和活动引用吗?

时间:2018-10-28 09:07:35

标签: java android

我有一个非常大的项目,恰好需要能够在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框架下这样做是一件好事。我没有注意到任何内存泄漏,但这是我担心的潜在问题。任何想法和/或建议将不胜感激。

0 个答案:

没有答案