在android中,我需要引用“context”或者说“context”传递给几个类。为此,我实现了一个静态类,它通过它来保存“上下文”和所有其他类访问上下文。
//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应用程序中引用的正确方法。
答案 0 :(得分:4)
这里的问题不是关于效率,而是关于静态存储上下文的固有风险。
在许多事件中,上下文可能会发生变化,最有可能的是更改设备方向,因此您不应该始终对其进行中继。我认为你应该将构造函数中的Context传递给你认为会使用它的每个类(或者更确切地说,重新设计你的代码,这样你就不需要它,尽管这可能有点棘手)。
在最糟糕的情况下,您应该尽可能频繁地更新它。但是,再一次,让它始终可以访问的重点是什么?我认为风险不值得做一个仔细的应用程序设计的懒惰(抱歉,如果这听起来很粗鲁,我不是故意的)。
答案 1 :(得分:0)
您应该明确地避免它,因为它可能会导致内存泄漏。 阅读:Avoiding memory leaks
这意味着视图可以引用整个活动,因此也可以引用您的活动所持有的任何内容;通常是整个View层次结构及其所有资源。因此,如果泄漏Context(“泄漏”意味着您保留对它的引用从而阻止GC收集它),则会泄漏大量内存。如果你不小心,泄漏整个活动可能非常容易