Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Activity.onStart()中的静态上下文_Java_Android_Static_Android Context - Fatal编程技术网

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()实际上将返回上下文而不是活动。谢谢