我有一个代码(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);
}
}
}
答案 0 :(得分:1)
来自TimerHandler
主题的Engine#UpdateThread
触发器。执行(TimerHandler
任务)也会在Engine#UpdateThread
线程中触发。因此,TimerHandler
执行任务不可能同时触发两次(或更多次)。
使用TimerHandler
似乎很好。如果你有很多对象 - 它可以真正阻止线程,所以你可以做你随机的东西来改进它。
但是,你可以运行另一个线程,但你必须仅在runOnUpdateThread
中更新精灵可见性(不要与Android runOnUiThread()
混淆)