android - 间隔 5 分钟后递归启动 AsyncTask

标签 android android-asynctask

我想创建一个类的实例(它扩展了 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/

相关文章:

android - 不理解 AIDL 文件中的编译错误

android - 如何暂停视频以阻止它在后台播放?

Android 使用自定义主题修改样式属性

android - Android使用带有列表 Activity 的JSON强制关闭并显示错误

java - 发出 HTTPS 请求时出现问题

android - Android Studio编译时间异常

java - 使用 Android 应用程序中的 post req 将数据保存到 mongodb

android - 哪个更好 : Loader or Headless Fragments

java - 将数据从一个类的一个对象复制到 Android 中另一类的另一个对象

java - 使用 AsyncTask 获取 JSON 时,ProgressDialog 永远不会被关闭