【问题标题】:How to determine the right Context to use in different cases (Toast.makeText, context.getSharedPreferences etc)如何确定在不同情况下使用的正确上下文(Toast.makeText、context.getSharedPreferences 等)
【发布时间】:2012-08-30 15:57:15
【问题描述】:

我在想是否有一种方法可以确定传递给 Toast.makeText() 之类的方法的最佳上下文是什么,或者在获取 SharedPreferences 时像 context.getSharedPreferences() 一样。是否有理由不总是使用 应用程序上下文代替 ActivityIntentService 上下文,例如?

【问题讨论】:

    标签: android android-activity toast android-context


    【解决方案1】:

    为了解释区别,复制自https://stackoverflow.com/a/4128799/1143977

    它们都是 Context 的实例,但应用程序实例与应用程序的生命周期相关联,而 Activity 实例与 Activity 的生命周期相关联。因此,他们可以访问有关应用程序环境的不同信息。

    如果您阅读 getApplicationContext 上的文档,它会指出,只有在需要生命周期与当前上下文分开的上下文时才应该使用它。

    Activity 上下文大概有一些关于当前活动的信息,这些信息是完成这些调用所必需的。如果您显示确切的错误消息,也许能够指出它究竟需要什么。

    但一般来说,除非您有充分的理由不这样做,否则请使用活动上下文。

    【讨论】:

    • 他们在Android Developer Blog 上说的相反,即尽量避免使用 Activity-context 并改用 Application-context ..
    • IMO,我认为他们想说的是,如果您打算为对象的长寿命提供上下文,那么应用程序上下文是一个好主意。他们告诉我们只在这种情况下避免活动上下文。而据我了解,您可以使用活动上下文来休息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多