用什么来代替thread.sleep

时间:2011-02-02 19:42:30

标签: android

我的代码中有一个for循环作为后台线程的一部分。在循环中执行代码的部分方法我想要一个等待期,所以我调用thread.sleep。我发现如果手机显示屏在等待期间关闭,则等待时间会变得不稳定。根据文件,睡眠不是时间可靠的。所以我想知道要替换什么。据我所知,如果我创建一个后延迟子线程,我将失去for循环中的连续性。我希望我错了,并且不能正确理解这些机制 - 任何帮助都会受到赞赏。 罗恩

3 个答案:

答案 0 :(得分:1)

处理sleep()不可靠性的一种方法是添加代码来测量你睡觉的实际时间。这通常在动画中完成,例如,可以做出决定,跳过一定数量的帧以赶上实时。

答案 1 :(得分:0)

您可以使用处理程序并致电postDelayed吗?老实说,我不能声称它有多可靠,或者它是否适合你的问题,但是我用它来进行小规模的定期更新。

您也可以查看Partial Wake Locks,看看是否可以为您提供更可靠的效果。

答案 2 :(得分:0)

你需要这样的东西:

(...)
Message msg = new Message();
try {
    myHandler.sendMessageDelayed(msg,1000);

            } catch (Exception e) {
                Log.d(TAG,"Hum?",e);
            }
        }
    }


    private Handler myHandler= new Handler() {
        /*
         * (non-Javadoc)
         * 
         * @see android.os.Handler#handleMessage(android.os.Message)
         */
        @Override
        public void handleMessage(Message msg) {
            //DO WHAT YOU WANT..
        }
    };