android - 按顺序多次运行相同的 Asynctask

标签 android android-asynctask

我正在尝试按顺序执行相同的 Asynctask。例如,假设有一个 Asynctask A。现在假设 A 检查某个服务器是否繁忙。如果它很忙,它会再次检查……等等。假设它检查了 5 次,然后让用户知道该服务不可用。
所以显然可以使用相同的 Asynctask。
尝试用循环实现它可能会产生意想不到的结果 link ,
Asynctask 是一个即发即弃的实例,AsyncTask 实例只能使用一次。
所以循环5次意味着Asynctask会被调用5次。但是如果服务器在第二次尝试时是免费的,我不需要额外的检查。 android 应用程序也可能会挂起(我的也是)。如果我在这个话题上错了,请纠正我。

答案也是,“像 new MyAsyncTask().execute(""); 这样调用任务
所以如果我喜欢这样——例如,

new someAsyncTask() {
            @Override
            protected void onPostExecute(String msg) {
                new someAsyncTask() {
                    @Override
                    protected void onPostExecute(String msg) {
                      ....and so on 5 times.
                   }
               }.execute(this);
            }
        }.execute(this);

应该顺序调用5次应该没有问题。
这是执行此操作的唯一方法还是存在任何其他解决方案?

最佳答案

您可以在外部类中使用字段变量:

private int count;
private void attemptConnect(){
    count = 0;

    new MyTask().execute("");
}

class MyTask extends AsyncTask<String, String, String> {
    @Override
    protected String doInBackground(String... params) {
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        count++;
        if(count < 5){
            new MyTask().execute("");
        }
    }
}

或者将计数传递给 AsyncTask 构造函数:

private void attemptConnect(){
    new MyTask(0).execute("");
}

class MyTask extends AsyncTask<String, String, String> {
    private int count;

    public MyTask(int count){
        this.count = count;
    }

    @Override
    protected String doInBackground(String... params) {
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        if(count < 4){
            new MyTask(++count).execute("");
        }
    }
}

关于android - 按顺序多次运行相同的 Asynctask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004793/

相关文章:

android - 引用已销毁的 Activity,即使使用了 WeakReference

java - 异步任务 : invalidating view does not take effect

android - 更新到buildToolsVersion 25结果ClassNotFoundException

android - <include> 标签覆盖属性

android - 如何在 Android 中从 Java 代码执行 Python 脚本

android - RecyclerView OnClick 不工作

java - 尝试使用 AsyncTask 读取 RSS 时更新 UI,但不起作用

android - 在代码中创建 Android ConstraintLayout 和 Guidelines

java - AsyncTask onPostExecute 对话框不起作用

android - 什么最适合此操作,异步任务或线程?