싱글 톤 클래스에 대한 질문이 있습니다. next() 메서드를 호출하면 mProcessIndex가 증가 할 것으로 예상되지만 실제로는 스택 오버 플로우 오류가 발생하지 않습니다. 그래서, 문제는 mProcessIndex 값을 수정하는 올바른 방법은 무엇입니까? 아래Java - Infinity Loop 싱글 톤 클래스 메서드 호출
코드 :
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++;
}
}
}
}
어리석은 실수 .. 감사합니다. –