处理多个AsyncTask启动

时间:2011-06-29 11:02:25

标签: android

我的AsyncTask中有Activity,当用户点击按钮时,我开始AsyncTask

    @Override
    public void onClick(View view) {
        switch(view.getId()){
        case R.id.btnLogin:
            if(task==null){
                task=new LoginTask(this);
                task.execute();
            }
            break;

        }
    }

但是,如果用户在任务完成后单击按钮我希望它再次执行。我该怎么做才能做到这一点?我应该在每次用户点击按钮时创建新任务吗?如果任务已在运行,是否可以创建新实例? 此外,任务是静态内部类,以便处理屏幕旋转。

4 个答案:

答案 0 :(得分:1)

您可以使用executeOnExecutor()

Executor上执行AsyncTask

现在默认情况下,线程池并行运行:

  

从DONUT开始,这已经改变了   允许多个的线程池   任务并行运作。后   蜂巢,计划改变   这回到单个线程来避免   常见的应用程序错误

要确保线程以串行方式运行,请使用:SERIAL_EXECUTOR

其他:How to use an Executor

答案 1 :(得分:1)

将任务声明为类变量。在AsyncTask的postExecute中使其为null。可能你已经完成了

答案 2 :(得分:0)

如果您希望它仅在先前的实例已经完成时运行,那么您可以使用AsyncTask.getStatus(),仅在状态为AsyncTask.Status.FINISHED时才启动新任务。

答案 3 :(得分:0)

不要同时运行它。制作Asynctasks的队列并一个接一个地运行。