Java 在整个活动中获取上下文的最佳方式是什么?

Java 在整个活动中获取上下文的最佳方式是什么?,java,android,android-context,Java,Android,Android Context,我多次保存到单个活动中的SharedReferences。每次读或写时,我都会传递上下文。以下是我正在考虑的两个选择——哪一个更好(或者有更好的方法) 每次我需要将上下文传递给另一个类中的函数时(例如,一个类写入我的SharedReferences),我都会传递thisgetActivity().getApplicationContext() 我是否应该只在活动的onCreate()中保存一次变量(即Context ctxt=getActivity().getApplicationContext

我多次保存到单个活动中的SharedReferences。每次读或写时,我都会传递
上下文
。以下是我正在考虑的两个选择——哪一个更好(或者有更好的方法)

  • 每次我需要将上下文传递给另一个类中的函数时(例如,一个类写入我的SharedReferences),我都会传递this
    getActivity().getApplicationContext()
  • 我是否应该只在活动的
    onCreate()
    中保存一次变量(即
    Context ctxt=getActivity().getApplicationContext()
    ),然后在需要传递上下文时在整个活动中使用变量
    ctxt

  • 哪种方法技术上更好?关键是-我应该每次访问
    getApplicationContext()
    。我猜这很慢(&不必要),也可能会导致崩溃(我看到一些用户的日志,我无法重现,但堆栈跟踪总是指向包含
    getApplicationContext()
    )的行)

    活动本身可以用作上下文。只需传递
    。您可以在内部类中传递ActivityName


    getApplicationContext()
    返回“当前进程的单个全局应用程序对象的上下文。”

    检查这是您想要的,您只需使用
    活动作为
    context
    ,并且在任何时候调用
    getApplicationContext()
    都没有问题,您可能只需要找到替代方法,并可能使用
    getBaseContext()
    或活动本身

    getApplicationContext()不太可能导致崩溃,但getActivity()可能返回null。我假设你正在从片段中保存首选项。别忘了上传任何有助于你的帖子:)只是说先生