2016-04-14 95 views
0

我有一個實例變量mValue其值隨網絡請求定期更新。新值顯示在TextView中。還有一個按鈕,當點擊該按鈕時,將記錄當前值mValue。說我有這段代碼:Android更新ui快速

private int mValue = SOME_DEFAULT_VALUE; 

// invoked on the main thread as I am using Volley 
private void onNetworkResponseReceived(String response) { 
    mValue = getValue(response); // line 1 
    updateTextViewToReflectChangeInValue(); // line 2 
} 

private void onMyButtonClick() { 
    myLog(mValue); 
} 

假設updateTextViewToReflectChangeInValue()需要很長的時間才能完成,是有可能,我在文本視圖中看到的是從我在日誌中看到,當我按一下按鈕有什麼不同?

如果我在第1行完成後和第2行開始之前點擊按鈕,我會在TextView和日誌中看到什麼?

+0

我想看看代碼是否有潛在的錯誤。 – Jonas

+0

您可以點擊多快? :P – razzledazzle

回答

0

如果在主線程上執行onNetworkResponseReceived函數,則保證在調用onMyButtonClick處理程序之前執行第1行和第2行。

+0

因此,當主線程處於'onNetworkResponseReceived()'時點擊按鈕時,Android會對點擊進行排隊,然後在'onNetworkResponseReceived()'返回後運行'onMyButtonClick()'? – Jonas

+0

這是正確的。 –