Java 如何在android中创建循环临时动作的线程
我想,在我的主要活动中,启动一个线程,每x秒做一些事情。 这个说法正确吗 取自我的oncreate方法:Java 如何在android中创建循环临时动作的线程,java,android,multithreading,sleep,Java,Android,Multithreading,Sleep,我想,在我的主要活动中,启动一个线程,每x秒做一些事情。 这个说法正确吗 取自我的oncreate方法: Thread thread = new Thread() { @Override public void run() { try { while(true) { sleep(5000); do stuff
Thread thread = new Thread()
{
@Override
public void run() {
try {
while(true) {
sleep(5000);
do stuff
};
thread.start();
如果相关,它会每5秒启动一个视频播放器并检查其缓冲区。您可以使用Java的
ExecutorService创建灵活有效的计时器
:
// create executor that consists of 1 thread
final ExecutorService e = Executors.newScheduledThreadPool(1);
// schedule it to execute every 5000 ms starting from now
((ScheduledExecutorService) e).scheduleAtFixedRate(new Runnable(){
@Override
public void run() {
// your repeating task
}
}, 0, 5000, TimeUnit.MILLISECONDS);
这种方法更灵活,而且如果Java文档不说谎的话,更精确,因为它独立于系统时钟变化
使用计时器任务。请注意,要触摸ui,您需要在ui线程上发布queue@blackbelt基本上我应该在代码中用timertask替换world线程?使用这个参照物似乎是这样的。为什么使用线程比使用线程更好?我不必与ui交互,只需进行一些计算。为什么您不喜欢您现有的方法?如果不考虑异常,看起来还可以handling@SashaSalauyou我以前从来没有实现过线程,我读到不推荐使用sleep,因为它可能会冻结主线程(这似乎很奇怪,但是网络上有人这么说…
thread.sleep()
只能在从主线程调用主线程时冻结主线程。。。在这里,您从单独的线程调用它,所以没有什么需要担心的。但是,如果您想遵循好的风格建议,请查看Java的ExecutorService
,尤其是它的ScheduledExecutorService
子类。