我有一個AtomicInteger變量(CurrentCycle)正在一個單獨的線程中更新到我的UI線程中。我試圖根據AtomicInteger的值更新UI字段中的文本字段,而不在UI線程中使用ugle while循環。如何爲在不同線程中運行的變量實現一個變量變量監聽器(示例)
我已經花了幾天在網上搜索查看相關查詢,但沒有得到任何關於此的任何地方。我正在尋找最簡單的方法來做到這一點。我知道有類似問題的帖子,但是由於它們太抽象或者需要不同,所以我一直無法使用它們。
我的主要問題是: 1.我需要註冊一個偵聽器來做到這一點,或者有一個更簡單的方法嗎? 2.我在哪裏以及如何註冊聽衆?我是否必須設置一個單獨的接口類(如果可能,我想避免這種情況)。 3.你能否請一些我可以使用的真實例子 - 抽象的解釋對我來說目前還沒有幫助!
下面我已經包含了我的關鍵代碼(它沒有做任何事情,因爲方法沒有被解僱)。 Anyhelp你可以提供將不勝感激。
// MyActivity.java
// Declaration (do I need this?)
AtomicInteger CurrentCycle = new AtomicInteger(0);'
// Method which doesn't appear to be firing when CurrentCycle Changes...
public void setVariableChangeListener(VariableChangeListener variableChangeListener) {
this.variableChangeListener = variableChangeListener;
if ((CurrentCycle != PreviousCycle) && (this.variableChangeListener !=null)) {
Toast.makeText(getApplicationContext(), "Test - code on variable change is firing.", Toast.LENGTH_SHORT).show();
PreviousCycle=CurrentCycle;
}
感謝您回答這個問題。如果我想在變量變化引發的事情上有更多靈活性,該怎麼辦?即我想能夠在GUI線程中調用一個方法? – 2014-09-02 22:05:12
@OmahaNebrasca:如果你的不是一個Swing應用程序,那麼只需使用一個PropertyChangeSupport實例而不是SwingPropertyChangeSupport,如果你仔細考慮了線程,這個代碼就可以工作。 – 2014-09-02 22:06:34
基本上 - 在一個可運行線程中,我有一個循環通過定時循環播放不同的聲音 - 我希望能夠在播放聲音發生變化時顯示圖形,可能是計時器和一些文本。 – 2014-09-02 22:09:06