Java Activity.onStart()中的静态上下文
我试图从Java Activity.onStart()中的静态上下文,java,android,static,android-context,Java,Android,Static,Android Context,我试图从上下文子类之外的类Utilities.java生成通知。我曾考虑过提供一个SingletonContext类,并查看了一些帖子。我希望能够返回!=空上下文对象,因为通知可以在任何给定时间生成,因为它是从messageReceived()回调生成的 这样做有什么不利之处: public static Context c; public class MainActivity extends Activity{ @Override public void onStar
上下文
子类之外的类Utilities.java
生成通知。我曾考虑过提供一个SingletonContext
类,并查看了一些帖子。我希望能够返回!=空
上下文
对象,因为通知可以在任何给定时间生成,因为它是从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()
上没有什么不同,但是,它保证活动启动时上下文是最新的。上下文在内存中保留对该活动的引用,您可能不希望这样做。也许用
this.getApplicationContext();
相反。这仍然允许您执行文件IO和上下文所需的大多数其他操作。没有对此活动的特定引用。上下文在内存中保留对此活动的引用,您可能不希望这样做。也许用
this.getApplicationContext();
相反。这仍然允许您执行文件IO和上下文所需的大多数其他操作。没有对此活动的特定引用。也许您应该覆盖onResume方法。 如果打开一个新活动并切换回,则不会调用onStart方法 Android生命周期:
顺便说一句:我了解到ApplicationContext在使用对话框或toast时存在问题,因此,如果您使用上下文来创建其中的一个,您应该将活动用作上下文。也许您应该覆盖onResume方法。 如果打开一个新活动并切换回,则不会调用onStart方法 Android生命周期:
顺便说一句:我了解到ApplicationContext在使用对话框或toast时存在问题,因此如果您使用上下文来创建其中的一个,您应该将您的活动用作上下文。您的意思是在onStart()中设置c=this.getApplicationContext()?没错,这样做。getApplicationContext()实际上将返回上下文而不是活动。谢谢您的意思是在onStart()中设置c=this.getApplicationContext()吗?没错,这样做。getApplicationContext()实际上将返回上下文而不是活动。谢谢