来自Activity.onStart()的静态上下文

时间:2013-10-29 15:42:27

标签: java android static android-context

我正在尝试从Utilities.java的子类之外的类Context生成通知。我考虑过提供一个SingletonContext课程并查看帖子ike this。我希望能够return != null Context对象,因为通知可以在任何给定时间生成,因为它是从messageReceived()回调生成的。

做这样的事情有什么缺点:

public static Context c;    

public class MainActivity extends Activity{
    @Override
    public void onStart()
      super.onStart()
      c = this.getApplicationContext();
}

//other method somewhere outside this class
public Context getContext(){
   return MainActivity.c
}

我认为将它放在onCreate()上没有任何不同,但是,它确保在活动开始时上下文是最新的。

2 个答案:

答案 0 :(得分:4)

Context在内存中保留对此活动的引用,您可能不需要它。也许使用

this.getApplicationContext();

代替。这仍然允许您执行文件IO以及上下文所需的大多数其他事情。没有具体参考这项活动。

答案 1 :(得分:0)

也许你应该覆盖onResume方法。 如果您打开一个新活动并切换回来,则不会调用onStart方法。

Android生命周期:doc

BTW:我使用对话框或Toast来阅读ApplicationContext的问题,因此如果你使用上下文来创建这些问题,你应该使用你的Activity作为上下文。