我想创建一个类的实例(它扩展了 Asynctask
)并在每 5 分钟后调用它的 execute()
方法。为此,我尝试在 onPostExecute()
方法中调用 Thread.sleep(5*60*1000))
,然后创建该类的一个新实例。代码如下。
public class MyAsyncTask extends AsyncTask<String, Void, String>
{
protected String doInBackground(String... arg0) {
//whatever I want to do
}
protected void onPostExecute(String result) {
Thread.sleep(5*60*1000);
new MyAsyncTask().execute("my String");
}
}
但是使用此代码会阻塞 UI 5 分钟。我在某处读到 onPostExecute()
中的代码是在 UI 线程中执行的。这解释了为什么 UI 被阻止。
但是,如何在不阻塞 UI 的情况下创建 AsyncTask
的新实例?
有什么建议吗? 谢谢。
最佳答案
在 onPostExecute 中使用此代码。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
new MyAsyncTask().execute("my String");
}
}, 5*60*1000);
关于android - 间隔 5 分钟后递归启动 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16252717/