java - 如何在android中创建一个循环临时 Action 的线程

标签 java android multithreading sleep

我想在我的主要 Activity 中启动一个线程,每 x 秒执行一些操作。 这个方法正确吗?

取 self 的 oncreate 方法:

  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 文档没有说谎的话,它会更精确,因为它独立于系统时钟的变化。

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html

关于java - 如何在android中创建一个循环临时 Action 的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374060/

相关文章:

java - 如何在 Azure DevOps 管道中安装 Java?

Android 在 Style 中设置 ImageView 图片 src

java - 例如,事件监听器如何不断轮询以检查按钮是否被单击?

.net - 同步执行不同类中的代码的线程的有效方法?

java - 帮助在 Swing 中绘制自定义图形

java - 如何确定我为 Java 中请求的字体获得的字体?

Java:打印语句中的==给出了不同的答案

android - Jetpack Compose 中的 fragment 容器

android - 我如何通过代码锁定设备的方向

java - 尝试传递 InputStream 时出现 StreamCorruptedException