我有一个关于单例类的问题。当我调用方法 next() 时,我预计 mProcessIndex 会增加,但实际上,它不会增加,因此会导致堆栈溢出错误。那么,问题是修改 mProcessIndex 值的正确方法是什么?
代码如下:
public class HomePopupDisplayManager {
private static HomePopupDisplayManager sInstance;
private List<WeakReference<HomePopupMessage>> mMessages;
private int mProcessIndex;
private HomePopupDisplayManager() {
mMessages = new ArrayList<>();
mProcessIndex = 0;
}
public static synchronized HomePopupDisplayManager getInstance() {
if (sInstance == null) {
sInstance = new HomePopupDisplayManager();
}
return sInstance;
}
public void register(@NonNull HomePopupMessage message, @IntRange(from = 0) int order) {
mMessages.add(order, new WeakReference<>(message));
}
public void next() {
if (mProcessIndex >= 0 && mProcessIndex < mMessages.size()) {
HomePopupMessage message = mMessages.get(mProcessIndex).get();
if (message != null) {
next();
mProcessIndex++;
}
}
}
}
最佳答案
问题出在:
next();
mProcessIndex++;
应该是:
mProcessIndex++;
next();
关于Java - 无限循环单例类方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43601179/