2016-04-14 100 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

这是正确的。 –