暂停或睡眠 AsyncTask 而不影响 UI

Nab*_*bin 0 java multithreading android android-asynctask

我可以在不影响 UI的情况休眠或停止 AsycTask 的执行吗?除了创建一个新线程来实现这一点之外,还有其他方法吗(我确信这不会影响 UI)?

解释:

public class MyAsync extends AsyncTask<....>{

 @Override
  ..doInbackground(){
   //do something
     for(....){
          //sleep this Asynctask

           //I want to delay my for loop
        }
     //do something
    } 
}
Run Code Online (Sandbox Code Playgroud)

创建一个新线程不是我想要的,如下所示:

//inside doInBackground()
new Thread(new Runnable(){
   @Override
   public run(){
     for(..){
       Thread.sleep(1000);//sleeping for 1 second
     }
  }
});
//other parts
Run Code Online (Sandbox Code Playgroud)

PS在服务中使用AsyncTask每 N 秒在后台运行一次。

Ale*_*ood 6

如果Thread.sleep(1000)doInBackground()方法内部调用,这不会影响 UI,因为它doInBackground()是在后台线程上调用的。

  • 我的答案如何需要创建一个新线程?我的建议是你应该在 `doInBackground()` 方法中调用 `Thread.sleep(1000)`。 (3认同)
  • 您在原始问题中说的是“1000”,而在评论中说的是“2000”。无论哪种方式,真的很重要吗?? (2认同)