ui / worker - 线程通信

时间:2017-09-12 17:20:18

标签: java android multithreading

我刚开始安卓工作室。我正在制作游戏。我读到你应该在不同的线程上分离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的整数值?我需要一个变量来说明要更新的内容,还需要一些值来说明多少......

0 个答案:

没有答案