我刚开始安卓工作室。我正在制作游戏。我读到你应该在不同的线程上分离ui和游戏逻辑/渲染。我目前有一个类游戏,可以扩展在ui-thread上运行的活动。游戏还有一个处理程序和一个Game View类。游戏视图是游戏世界,它在一个单独的线程上运行,即工作线程。我正在尝试围绕如何在这些之间进行通信,因为例如当玩家对工作线程造成损害时,我需要更新ui线程上的健康栏。
幸运的是我在Game View类中引用了处理程序,所以我应该可以在这些之间进行通信。我的问题是发布将日志记录作为参数,需要使用交换机在另一端解密。创建一个具有这样的适当方法的自定义处理程序是不是一个好习惯:
this.handler = new CustomHandler() {
public void updateHealthBar(int damage) {
//find ui element and update ...
}
...Other methods
@Override
public void publish(LogRecord logRecord) {
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
};
而不是:
this.handler = new CustomHandler() {
@Override
public void publish(LogRecord logRecord) {
switch(logRecord.Message()) {
case "Update Health Bar":
//find ui element and update ...
... check for other cases
}
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
};
我如何获得我应该从logRecord更新ui的整数值?我需要一个变量来说明要更新的内容,还需要一些值来说明多少......