1

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

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

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(),但是,它保证了活动开始时上下文是最新的。

4

2 回答 2

5

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

this.getApplicationContext();

反而。这仍然可以让您执行文件 IO 和上下文所需的大多数其他事情。没有具体提及此活动。

于 2013-10-29T15:58:11.553 回答
0

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

Android 生命周期:文档

顺便说一句:我阅读了有关 ApplicationContext 使用对话框或 toast 的问题,因此如果您使用上下文创建这些问题,则应该使用您的 Activity 作为上下文。

于 2014-08-06T04:04:05.620 回答