我有一个应用程序,其中包含一个实现Runnable的类。启动线程并重写run()methid的位置。这运行我的图形。
1.st问题:run()被调用的频率是多少?我没有为此设置时间,所以它必须是默认值?
2.问题:我希望在一定时间(2分钟,5分钟,10分钟)之后完成任务。等待这样做的最佳方式是什么,我正在考虑使用int作为计数器,一旦达到特定值,我就会做。
答案 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。这将跟踪秒数,您可以将其用作分钟的基础并在特定时间生成其他事件。