这是交易,我需要运行一个操作,并在运行时显示进度条。我想我需要在另一个线程上运行进度条更新,因为如果我没有(我已经尝试过),则在操作结束之前不会更新栏。我已经编写了下面的代码,但它不起作用,而是崩溃了应用程序。我相信这个问题与线程之间的同步有关,但我不确定(第二次使用Java线程,请饶我,我还是新手)。这是在Android上运行。
你能发现我不知道的任何非法行动吗?谢谢!
ProgressDialog progress; //Global, declared somewhere else
final Object flag = new Object();
Thread progressThread;
//More Code...
progress.show();
progress.setMax(auxMobile.size() + auxStatic.size() );
progress.setProgress(0);
progressThread = new Thread(new Runnable() {
@Override
public void run() {
try {
synchronized (flag) {
while (progress.getProgress() < progress.getMax()) {
progress.incrementProgressBy(1);
flag.wait();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
progressThread.start();
try {
for(int i=0; i<auxStatic.size(); i++) {
//More Code...
flag.notify();
}
for(int i=0; i<auxMobile.size(); i++){
//More Code...
flag.notify();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}