jax*_*jax 21 android memory-leaks android-context
将Context传递给构造函数并将其保存为私有变量供内部使用是不好的做法吗?另一种选择是将Context作为参数传递给需要它的方法.
哪个更好?我有一种感觉,传递给构造函数可能会导致内存泄漏意外.
JRL*_*JRL 11
通常,你所需要的只是ApplicationContext,所以你能做的就是通过this.getApplicationContext()而不仅仅是通过this.无论如何,您的应用程序上下文存在于应用程序的生命周期中,因此它不是内存泄漏.
这取决于对象的生命周期.如果您确定Object只能在您的Activity内部使用,那么您可以将Context传递给构造函数,否则不要传递Context.
如果一个Object有一个对Context的引用,这将停止Activity被Garbage Collected,并且由于一个Activity引用了它的所有视图,这意味着你可以很快地泄漏大量内存.
因为像设备轮换这样的事情会导致重新创建活动,并且很容易挂起到对象而没有意识到,所以很容易将自己赶出去.
因此,最好是安全起见,并在需要时传递上下文.