经过具体时间后,Android Runnable

时间:2012-11-01 20:49:36

标签: android timer runnable

我有一个应用程序,其中包含一个实现Runnable的类。启动线程并重写run()methid的位置。这运行我的图形。

1.st问题:run()被调用的频率是多少?我没有为此设置时间,所以它必须是默认值?

2.问题:我希望在一定时间(2分钟,5分钟,10分钟)之后完成任务。等待这样做的最佳方式是什么,我正在考虑使用int作为计数器,一旦达到特定值,我就会做。

4 个答案:

答案 0 :(得分:0)

1.st问题:run()被调用的频率是多少?我没有为此设置时间,所以它必须是默认值?

调用它时调用Thread中的run()方法,例如。 yourThread.start();

2.问:我希望在一定时间(2分钟,5分钟,10分钟)之后完成工作等等。最好的方法是做什么,我正在考虑使用int作为一个计数器,一旦它达到一个特定的值就行了我想要的。

有选择。您可以调用Thread.sleep()方法(注意:永远不要在您的UI线程中执行此操作)。

或者您可以按照上述方式进行操作。因此,在run()方法中,您将有一个while()循环,并检查每次迭代是否lastUpdate与以毫秒为单位的当前时间之差大于所需期间,例如。 2分钟,5分钟或10分钟。

我希望这会有所帮助。

答案 1 :(得分:0)

关于问题2 - 使用ScheduledExecutor

答案 2 :(得分:0)

  

1.st问题:run()被调用的频率是多少?

你可以自己找到,把它放在Runnable的开头:

Log.v("Running Runnable", System.currentTimeMillis() + ""); 
  

2.问:我希望在一定时间(2分钟,5分钟,10分钟)等之后完成工作。

扩展HandlerThread(它为你初始化Looper!),添加一个Handler作为类变量,并使用Handler的postDelayed()postAtTime()方法。

答案 3 :(得分:0)

run()调用之间的确切时间取决于处理器。每次通话之间的时间是纳秒级真正可见的东西。如果您正在尝试创建计时器,我建议使用System.currentTimeMillis(),在run()方法中调用它,一旦差值大于或等于1000毫秒,实际计时器将减1。这将跟踪秒数,您可以将其用作分钟的基础并在特定时间生成其他事件。