android - 延迟线程也卡住其他 Activity

标签 android multithreading delay

我有一个名为 actions_table 的表。其中有必须按照特定顺序执行的操作,它们由单独的服务实现。除了延迟操作外,一切正常。当操作表中存在延迟时,应用程序会在给定的延迟时间内卡住,最奇怪的是其他服务会在延迟后执行,即使它们在 delay_thread 启动之前就已启动!

我已经用 thead 和 while 循环实现了延迟,检查系统时间是否超过了 start_time + delay_time。同样的结果。

如何在不延迟延迟之前启动的服务的情况下实现此延迟? (如果不卡住 UI 也很好)

MainActivity{
   onCreate{
       .
       .
       .
       for(i=0;i<actions_table.length;i++){

           if(condition1)
               startService1

           else if(delay_condition2)
                delay_thread.start();

           else if(condition3)
                startService3
       }
       .
       .
       .
    }
}

我终于找到了可行的方法。分享我为他人所做的事情。

delay=0;
for(i=0;i<actions_table.length;i++){
    if(current_action is delay)
        delay=number_of_seconds 
    final Handler = new Handler();
    handler.postDelayed(new Runnable(){
       @Override
       public void run() {

           if(condition1)
               startService1
                .
                .
                .
            else if(conditionX)
                startServiceX
       }
       },delay*1000);
}

这样,延迟操作之后的所有操作都会在所需的秒数后一起执行。 (action1, action2----delay---action3, action4.....actionX)

最佳答案

试试这个代码示例。有用。

final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    // Do something after 10s = 10000ms


                }
            }, 10000);

关于android - 延迟线程也卡住其他 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20767474/

相关文章:

java - 使用信号量

Windows Workflow Foundation 4.0 选择包含延迟事件的事件

android - 成功安装Gradle后,Android Release APK崩溃

android - 在可穿戴模拟器上看不到可穿戴通知

android - 以编程方式添加的 tableRow 未显示在 TableLayout 中

Android AVD,未选择目标

java - Java线程使用join()时如何引发InterruptedExpection?

Java线程池功能

iphone - 完全神秘 - iOS 方法在随机延迟后执行

windows - 在进程完成之前,Windows cmd.exe 中的管道不会转发标准输出?