具有静态参考的活动

pra*_*ant 3 android

我正在研究由其他人编写的现有Android代码,它有几个内存问题.我无法理解的一个问题是这个.在主Activity类中,它有一个名为getReference()的静态方法.此方法基本上返回对名为mThis的变量的引用.现在,在onCreate方法中

class MyActivity extends Activity
 {
     private static MyActivity mThis;    
     public MyActivity getReference(){
           return mThis;
    }
     public onCreate(Bundle savedInstanceState){
       mThis = this;
     }

    ...
}
Run Code Online (Sandbox Code Playgroud)

现在在Content提供程序或从Dialog类扩展的类中,它使用此静态方法来获取对上下文的引用.

我很确定这是不正确的,也是内存泄漏的原因之一.但有没有办法获得当前上下文而不实际传递每个类中的上下文对象.有一个应用程序上下文,但我认为它没有任何方法来获取当前上下文.

我可以删除此方法,然后将对上下文对象的引用传递给这些类.但有没有其他方法来解决这个问题.

Com*_*are 9

我很确定这是不正确的,也是内存泄漏的原因之一.

是.

但有没有办法获得当前上下文而不实际传递每个类中的上下文对象.

没有"当前背景".请提供Context任何需要的方法.例如,您会注意到Android SDK的设置方式很多.

  • @uval:该活动不能被垃圾收集,即使用户通过BACK离开应用程序并且活动被销毁,如果该静态引用未被清除. (2认同)