In my activity there is a ProgressBar. When you get started, I will check the value get from another place and upgrade to the ProgressBar. Here is my code:
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar_detail);
final TextView progressText = (TextView) findViewById(R.id.progressText_detail);
final ImageView btnCancel = (ImageView) findViewById(R.id.imgCancel_detail);
progressBar.setVisibility(View.VISIBLE);
progressText.setVisibility(View.VISIBLE);
btnCancel.setVisibility(View.VISIBLE);
Thread t = new Thread() {
public void run() {
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
int oldProgress = 0;
while (progressBar.getProgress() < 100) {
int value = Downloader.progress.get(gameId+ "");
if (value != oldProgress) {
oldProgress = value;
progressBar.setProgress(value);
progressText.setText(value + " %");
}
}
}
});
}
};
t.start();
I get the value of the ProgressBar from int value = Downloader.progress.get(gameId)and this is correct. But when I run this code, the activity does not respond and shows nothing (but the application does not crash). It seems that the thread is updating the ProgressBar and blocking the UI thread, so the activity layout is not displayed.
What happened to my code? What is the correct way to update the ProgressBar in this situation?
source
share