用于进度对话的Android线程通信

时间:2015-08-06 18:43:55

标签: java android multithreading

这是交易,我需要运行一个操作,并在运行时显示进度条。我想我需要在另一个线程上运行进度条更新,因为如果我没有(我已经尝试过),则在操作结束之前不会更新栏。我已经编写了下面的代码,但它不起作用,而是崩溃了应用程序。我相信这个问题与线程之间的同步有关,但我不确定(第二次使用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();
}

1 个答案:

答案 0 :(得分:0)

在这种情况下你真的应该使用AsyncTask。 查看thisthis

它会使你的开发生活变得更容易!