簡體   English   中英

解決util(單例)類中的不一致問題

[英]Solve inconsistency in a util (singleton) class

我有一個util,singleton類,它有一些參數。 如果某些參數通過setter類方法更改,則類會通知訂閱者更改。 活動,片段和服務可以訂閱這些更改。 我在這個類中有一個Listener接口。 訂閱者必須實現接口定義的方法。

private static List<Listener> listeners = new ArrayList<>();

public static synchronized void addListener(Listener listener) {
    listeners.add(listener);
}

public static synchronized void removeListener(Listener listener) {
    listeners.remove(listener);
}

由於某些組件使用上述兩種方法訂閱和取消訂閱此類,因此偵聽器大小會發生很大變化。 但是當調用某種setter類方法時,就像這樣:

public static synchronized void decrementPosition() {
    if (position > 0) {
        position--;
        for (Listener listener : listeners) {
            listener.positionChanged(position);
        }
    }
}

我在調試模式中看到,“聽眾”的大小與添加和刪除不是最新的。 看起來'listeners.remove(listener)'不起作用,但是當我調試它時,看起來好像正在從列表中刪除'listener'。 當然,我得到了一個

java.lang.IllegalStateException: Handler (android.os.Handler) {3fc60df} sending message to a Handler on a dead thread

從類似二傳手的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM