如果我在对象的构造函数中传递上下文,那么如果所创建的对象是寿命很长的对象或单例对象,则可能会导致内存泄漏。下面的例子。
public class MyObject{
private final Context context;
public MyObject(Context context){
this.context=context;
}
}
最好从getApplicationContext()设置上下文,因为它返回应用程序类的单例,而不是像这样从引用类实例的上下文返回?
context = context.getApplicationContext();
如果我在对象的构造函数中传递上下文,那么如果所创建的对象是寿命很长的对象或单例对象,可能会导致内存泄漏
是的。例如,如果Context
是Activity
,则将Activity
其销毁后,通常会对其进行垃圾回收。但是,如果您从static
字段中引用了它,则不能对其进行垃圾收集。除非您更新该字段,否则将泄漏Activity
以及该字段所引用的所有内容。
最好从getApplicationContext()设置上下文
是的。该Application
上下文是单身,你注意,一个生活的您的过程的持续时间。实际上,它是“预泄漏”的。您不能通过让另一个static
字段指向它来进一步泄漏它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句