【问题标题】:Technique for get the ApplicationContext anywhere在任何地方获取 ApplicationContext 的技术
【发布时间】:2011-11-24 20:40:34
【问题描述】:

最近我发现了一个 sn-p,它使用以下技术从任何地方静态访问应用程序上下文。它看起来很酷,但确实是一个不错的选择,还是出于某种原因是一项糟糕的技术?

public class MyApp extends Application {
    private static MyApp instance;

    public static MyApp getInstance() {
        return instance;
    }

    public static Context getContext(){
        return instance.getApplicationContext();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }
}

【问题讨论】:

    标签: java android android-context


    【解决方案1】:

    除非您只是在需要Context 的类中公开一个将Context 作为参数的公共方法(并从您的Activity 等传递它),否则就是这样做的。

    【讨论】:

      【解决方案2】:

      这肯定会奏效。就像使用任何你不会滥用它的单例一样小心。阅读this question 的答案,解释为什么 ApplicationContext 很少(尽管有时)是正确使用的上下文。

      此外,在任何地方都可以使用 ApplicationContext 可以让您在组织类时更加草率,因为您无需考虑真正需要 ApplicationContext 的功能以及是否应该将其考虑在内等。这只是一个可能取决于你的纪律性。

      尽管other notable people 不同意,我总是对单例非常警惕,但我认为单例是模式还是反模式仍然存在相当广泛的争论。如果您在 Google 上搜索单例和反模式,您会发现像 this 这样的文章,我认为这些文章的观点相当不错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多