2016-04-14 7 views
0

私はインスタンス変数mValueを持っていますが、この値はネットワークリクエストによって定期的に更新されます。新しい値はTextViewに表示されます。ボタンをクリックすると、現在の値mValueが記録されます。私は、コードのこの部分を持っていると言う:Androidアップデートui quickness

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()が完了するまでに長い時間がかかり、それは私がテキストビューに表示することは、私はボタンをクリックしたときに、私がログに表示されるものと異なっている可能性があり?

TextViewと1行目が終了して2行目が始まる前にボタンをクリックすると、ログには何が表示されますか?

+0

コードに潜在的なバグがあるかどうかを確認したいと思います。 – Jonas

+0

どのくらい速くクリックできますか? :P – razzledazzle

答えて

0

メインスレッドでonNetworkResponseReceived関数を実行すると、onMyButtonClickハンドラが呼び出される前に、1行目と2行目の両方が実行されることが保証されます。

+0

メインスレッドが 'onNetworkResponseReceived()'に入っている間にボタンをクリックするとアンドロイドはそのクリックを待ち、 'onNetworkResponseReceived()'が返ってから 'onMyButtonClick()'を実行します。 – Jonas

+0

それは正しいです。 –

関連する問題