我们应该在Andengine游戏中使用什么进行后台处理?

时间:2015-10-08 07:57:52

标签: android timer andengine background-task

我有一个代码(for循环),每1秒运行一次。我正在使用TimerHandler。 我正在使用do while循环,我必须找到哪些对象是不可见的并使它们随机可见,因为要显示的对象数量随时间变化。我正在使用do while循环来选择随机对象。但问题是while循环可能需要很长时间(因为它随机选择值)来随机查找所有不可见对象,在此期间TimerHandler可能再次调用for循环。 我想知道是否有任何方法可以在后台执行该任务,以便它继续在后台运行,并从那里看到不可见的对象。

我的代码是

for(int i = 0; i < 15; i ++){
        if(i != playerSpriteNo{
            if(!sprite[i].isVisible()){
                do{
                    randomValue = MathUtils.random(0, 15);
                }while((playerSpriteNo == playerSpriteNo) && (sprite[i].isVisible()));

                sprite[i].setVisible(true);
            }
         }
}

1 个答案:

答案 0 :(得分:1)

  1. 来自TimerHandler主题的Engine#UpdateThread触发器。执行(TimerHandler任务)也会在Engine#UpdateThread线程中触发。因此,TimerHandler执行任务不可能同时触发两次(或更多次)。

  2. 使用TimerHandler似乎很好。如果你有很多对象 - 它可以真正阻止线程,所以你可以做你随机的东西来改进它。

  3. 但是,你可以运行另一个线程,但你必须仅在runOnUpdateThread中更新精灵可见性(不要与Android runOnUiThread()混淆)