在任何地方获取ApplicationContext的技巧

时间:2011-11-24 20:40:35

标签: java android android-context

最近,我发现了一个使用以下技术的代码段,以便从任何地方静态访问应用程序上下文。它看起来很酷但是真的是一个不错的选择,或者出于某种原因是一个糟糕的技术?

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;
    }
}

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

此外,让ApplicationContext在任何地方都可用,这样你就可以更加邋your你如何组织你的类,因为你不需要考虑ApplicationContext真正需要什么功能,以及你是否应该考虑到它等等。这只是一个也许取决于你是多么纪律。

尽管other notable people不同意,但我总是对单身人士非常警惕,但我认为单身人士是模式还是反模式仍然存在相当广泛的争论。如果您使用谷歌单身和反模式,你会发现像this这样的文章,这些文章在我看来是相当不错的。