0

我有一个带有实现 Runnable 的类的应用程序。启动线程并覆盖 run() 方法的位置。这运行我的图形。

1.st 问题:run() 多久调用一次?我还没有为此设置时间,所以它必须是默认值?

2.nd 问题:我希望在一定的时间(2 分钟、5 分钟、10 分钟)等之后完成一些事情。这样做的最佳方法是什么,我正在考虑使用 int 作为计数器,一次它达到了我想要的特定值。

4

4 回答 4

0

1.st 问题:run() 多久调用一次?我还没有为此设置时间,所以它必须是默认值?

run()当你调用它时调用你的线程中的方法,例如。yourThread.start();

2.nd 问题:我希望在一定的时间(2 分钟、5 分钟、10 分钟)等之后完成一些事情。这样做的最佳方法是什么,我正在考虑使用 int 作为计数器,一次它达到了我想要的特定值。

有选项。要么你可以调用Thread.sleep()方法(注意:永远不要在你的 UI 线程中这样做)。

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

我希望这有帮助。

于 2012-11-01T21:01:13.543 回答
0

关于问题 2 - 使用ScheduledExecutor

于 2012-11-01T21:04:10.293 回答
0

1.st 问题:run() 多久调用一次?

您可以自己找出答案,将其放在 Runnable 的开头:

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

2.nd 问题:我希望在一定的时间(2 分钟、5 分钟、10 分钟)等后完成一些事情。

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

于 2012-11-01T21:08:22.593 回答
0

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

于 2012-11-01T21:32:30.767 回答