【发布时间】:2020-07-21 04:47:03
【问题描述】:
首先,如果我的问题是愚蠢的,我想说声抱歉,我只是从 Android 开始。我在网上发现了一些文章,指出引用活动的单例导致内存泄漏。
我无法理解这是怎么发生的!
想象一下这样的情况——我们有一个名为MyInterface 的接口,有一个名为MySingleton 的单例和一个实现MyInterface 的活动
interface MyInterface {
void foo();
}
class MySingleton {
static MySingleton shared;
MyInterface delegate;
private MySingleton() {};
MySingleton getShared() {
if(shared == null)
shared = MySingleton();
return shared
}
void setDelegate(MyInterface delegate) {
this.delegate = delegate;
}
class MyActivity extends AppCompatActivity implements MyInterface {
@Override
void foo() {//do something}
@Override
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MySingleton.getShared().setDelegate(this);
// do other setup
}
由于 Java 没有循环引用,因此垃圾收集 MyActivity 应该没有问题,还是我错了?如果问题是假的,再次感谢,谢谢
【问题讨论】:
-
“垃圾回收MyActivity应该没有问题” 怎么会?
MySingleton持有对 Activity 的引用。
标签: android android-studio android-activity android-memory appcompatactivity