【问题标题】:Android Context object how to handleAndroid Context对象如何处理
【发布时间】:2012-06-06 22:25:06
【问题描述】:

这不是关于 Context 对象本身的问题。我想知道管理对它的引用的最佳方法是什么。当我创建 Activity、Service 等 android 对象时,上下文已经随处可见。

但是我有一堆不同的数据访问类、各种共享实用程序等。我发现自己编写每个调用并单独传递上下文。我想知道是否有任何处理上下文的好方法。也许是静态的?像这样将引用存储在我自己的 Application 对象中是个好主意吗?

public class MyApplication extends Application
{
    public static Context Context;

这样我可以从应用程序的任何地方访问上下文。这似乎是个好主意?

【问题讨论】:

  • 如果您想存储应用程序上下文,您可以在一定程度上做到这一点。请参阅this question,其中讨论了这种方法的潜在问题。你应该从不做的是在你的应用程序对象中存储一个 Activity 上下文。您将泄露该上下文并陷入问题。

标签: java android android-context


【解决方案1】:

将public static Context mContext;设为全局变量,并在onCreate()的开头添加mContext = this;。它使访问变得更加容易。通过将其设为公开和静态,其他文件可以看到您的主要活动的上下文,您不必将其作为参数传递给任何函数。在我看来,这可能是管理对它的引用的最好/最简单的方法。它还整理了对MainActivity.this 的各种引用。

alextsc 的评论显示了一个有用的链接,指向由此可能出现的问题。

【讨论】:

  • 或者应该创建静态getter。
  • 我已经继承了应用程序。我的应用程序使用服务、接收器等。活动只是应用程序的一部分。我认为将 MyApplication 公开为静态会更好 - 似乎这个上下文(应用程序本身)在我需要上下文的任何地方都可以正常工作。
猜你喜欢
  • 2012-12-14
  • 2011-06-23
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多