Android - 使用上下文的最佳方式

时间:2012-03-19 23:08:40

标签: android android-context

我有一个关于处理Android上下文的最佳方法的快速问题。很多事情(例如服务)要求您将上下文作为参数传递。目前,我有一个公共静态变量,设置为指向getApplication(),我只是在需要上下文的应用程序中引用它。

这样做可以吗?或者有更好的方法来处理这个问题吗?我的很多类都没有扩展Activity或服务,因此无法访问this.getApplication()。

当我传入静态变量时,一切似乎都能正常工作。

由于

2 个答案:

答案 0 :(得分:1)

  

这样做可以吗?

在某些情况下,Application对象将无法正常工作。例如,它与UI相关的东西很糟糕。

领先的Android工程师Dianne Hackborn首先有stated her regret at Application existing

我的一般建议是,只有当您知道具体为什么它优于使用ApplicationActivity等时,才能使用Service。当它是更好的答案(例如,绑定到服务)。

  

我的很多课程都没有扩展活动或服务,因此无法访问this.getApplication()。

将适当的Context作为参数传递,就像Android SDK一样。

答案 1 :(得分:0)

  

目前,我有一个设置为的公共静态变量   指向getApplication(),我只是在整个过程中引用它   需要上下文的应用程序。

     

这样做可以吗?

没有。

上下文适用于获取它的上下文。也就是说,活动具有该活动的上下文,服务具有服务的上下文,等等。现在,很多人做你正在做的事情,正如你所观察到的,它似乎有效。这并不意味着它将继续工作或它是好的设计。如果这是正确的模式,android将设计为静态可用的Context.INSTANCE。

活动,服务和应用程序是上下文(isA)。接收器将上下文传递给它们的onHandlerIntent()方法。对于您编写的所有其他类,只需习惯使用上下文构造它们。出于习惯,每当我创建一个新类时,我会自动添加一个接受上下文的构造函数并添加一个私有字段来保存它。

当您需要静态方法中的上下文时,您应该直接将其作为参数传递。