我有一个可以生成迷宫的应用。在迷宫生成期间,我想更新进度条。但是,我看不出这样做的好方法。进度条在一个线程上运行,而迷宫生成在另一个线程上运行。如何使两者来回传递一个简单的int?对不起,如果这是一个糟糕的问题,我是这方面的初学者。
protected void incrementProgress() throws InterruptedException {
generateMaze(); //Generates the maze by launching a new thread
while(progressBarStatus < 100) {
progressBarStatus = maze.getIntPercentDone(); //This does not get updated
Thread.sleep(10);
progressBarHandler.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(progressBarStatus);
}
});
}
if (progressBarStatus >= 100) { //This condition does not get met
Thread.sleep(100);
progressBar.dismiss();
}
}
/**
* Dummy maze generation method that has a counter to simulate progress
* @return
*/
protected void generateMaze() { //Method that builds a maze
mazeBuilder.build(maze, Constants.SKILL_X[0], Constants.SKILL_Y[0], Constants.SKILL_ROOMS[0], Constants.SKILL_PARTCT[0]);
try {
mazeBuilder.buildThread.join();
}
catch (InterruptedException e) {
mazeBuilder.buildThread.interrupt();
}
}
答案 0 :(得分:0)
理想情况下,您的进度条应位于主线程中。可以使用Asyctask完成迷宫生成。 Asynctask是在android框架提供的不同线程上执行任务的绝佳方法,并且内置了将更改发布到主线程的方法。
您可以了解AsyncTask here,here和here。
对于前进,一旦你创建了一个扩展Asynctask的类,你可以