android - 通过静态类传递上下文是否有效?

标签 android android-context

在android中,我需要引用“上下文”或者说将“上下文”传递给几个类。为此,我实现了一个静态类,它保存“上下文”以及通过它访问所有其他类的上下文。

//let's say I have a static class DataHolder 
//and my main acitivity i.e. whose context need to be refrenced

 public class DataHolder{
        public static Context context;
    }

public class MainActivity extends Activity{
    public void onCreate(Bundle bundle){
     DataHolder.context = getApplicationContext();
   }
}

那么,这个过程是否可以实现,或者它不是在 Android 应用程序中引用的正确方法。

最佳答案

这里的问题不在于效率,而在于静态存储上下文的固有风险。

上下文在许多事件中都可能发生变化,最有可能的是改变设备方向,因此您不应该总是依赖它。我认为您应该将构造函数中的 Context 传递给您认为会使用它的每个类(或者,更确切地说,重新设计您的代码,以便在它不可用的地方不需要它,尽管这可能有点棘手)。

在最坏的情况下,您应该尝试尽可能频繁地更新它。但是,话又说回来,让它始终可访问有什么意义呢?我认为,为了进行仔细的应用程序设计而冒的风险不值得(抱歉,如果这听起来很粗鲁,我不是故意的)。

关于android - 通过静态类传递上下文是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5946944/

相关文章:

android - 如何以编程方式在android中使用paypal将钱从一个帐户转移到另一个帐户

php - Android 中使用 JSON 将图像上传到服务器

android - 这 getContext() 和 getActivity() 有什么区别?

Android Intent 创建

安卓 WebView : Default Save As Context Long Press

java - 第一个参数类型错误。找到 : 'com.example.sunshine.FetchData' , 需要: 'android.content.Context'

java - 按下按钮时未调用 Intent

android - Adb命令取消/挂断来电

java - 从 Android 设备上的 libGDX 引擎上的游戏发送电子邮件?

java - CardView 在第二次点击时不展开