【发布时间】:2014-06-14 15:09:10
【问题描述】:
我目前正在开发一款简单的电梯 Android 游戏。用户可以在多个楼层添加乘客,他们在那里等到电梯接他们。如果是这样,乘客必须选择电梯内的目的地楼层。 对于每个游戏周期,电梯都会装载/卸载乘客,选择方向并移动。
现在的问题是,在一次迭代中,用户必须为每位已装载的乘客选择目的地楼层。因此,我需要以某种方式在后台运行电梯循环,但在一次迭代中会获得多个 UI 输入,而后台线程必须等待所有输入完成。
有没有人知道一个(好的)解决方案?
提前致谢
编辑以更好地理解代码的简化视图
public class Elevator {
public void iterate() {
unloadPassengers();
loadPassengers();
move();
}
private void loadPassengers() {
//if elevator isn't idle collect passengers going in same direction
if (!operation.isIdle()) {
Collection<Passenger> passengers = currentFloor.loadPassengers(operation.getDirection());
if (!passengers.isEmpty()) {
for (Passenger passenger : passengers) {
//!! chooseDestinationFloor() is the method where the user has to choose his destination floor, which requires UI input for each passenger during the background lifecycle; Here I would need this thread to block for each passenger until I got user input
passenger.setDestinationFloor(passenger.chooseDestinationFloor());
loadedPassengers.put(passenger.getDirection(), passenger);
}
firePassengersLoaded(currentFloor, passengers.toArray(new Passenger[passengers.size()]));
}
}
}
}
【问题讨论】:
-
发布你在后台线程中执行操作的代码
标签: android multithreading user-interface inter-process-communicat