Fazendo uns testes com meu amigo GilsonNunes percebemos que ao utilizar o código abaixo :
package viny.progress;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class AppTesteProgressActivity extends Activity {
/** Called when the activity is first created. */
private ProgressBar jProgressBar1,jProgressBar2;
private int max = 100;
private TextView lbl1, lbl2 ;
private int iterations = 2000000;
private int teste = 0 ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lbl1 = (TextView) findViewById(R.id.textView1);
lbl2 = (TextView) findViewById(R.id.textView2);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
setUp();
}
});
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
setUp2();
}
});
jProgressBar1 = (ProgressBar) findViewById(R.id.progressBar1);
jProgressBar2 = (ProgressBar) findViewById(R.id.progressBar2);
}
private void setUp(){
jProgressBar1.setMax(max);
final long l = System.currentTimeMillis();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < iterations; i++) {
jProgressBar1.setProgress(i * 100 / iterations);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
lbl1.setText(String.valueOf(System.currentTimeMillis() - l));
}
});
}
}).start();
}
private void setUp2(){
jProgressBar2.setMax(max);
final long l = System.currentTimeMillis();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < iterations; i++) {
if(teste != i){
teste = i ;
jProgressBar2.setProgress(i * 100 / iterations);
}
}
runOnUiThread(new Runnable() {
@Override
public void run() {
lbl2.setText(String.valueOf(System.currentTimeMillis() - l));
}
});
}
}).start();
}
}
O button2 que executa o método setUp2() e sempre ganha no desempenho.
Vale ressaltar que, o método setUp() faz menos testes que o método setUp2().
Venho pedir ajuda aos colegas do guj ,uma explicação para esse comportamento.
