哪些参数被传递到AsyncTask<arg1、arg2、arg3>?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我到底该放什么?我需要包括所有三个还是可以包括1,2,20?

提问于
用户回答回答于

谷歌的Android文档显示:

异步任务由3种通用类型定义,称为Params、Process和Result,以及4个步骤,称为onPreExecute、doInBackplace、onProgressUpdate和onPostExecute。

AsyncTask的泛型类型:

异步任务使用的三种类型如下:

Params, the type of the parameters sent to the task upon execution.
Progress, the type of the progress units published during the background computation.
Result, the type of the result of the background computation.

异步任务并不总是使用所有类型。要将类型标记为未使用,只需使用类型void:

 private class MyTask extends AsyncTask<Void, Void, Void> { ... }

你还可以参考:http://developer.android.com/reference/android/os/AsyncTask.html

或者,您可以通过引用AsyncTask来明确AsyncTask的角色。

典型的AsyncTask类的结构如下:

private class MyTask extends AsyncTask<X, Y, Z>

    protected void onPreExecute(){

    }

此方法在启动新线程之前执行。没有输入/输出值,所以只需初始化变量或您认为需要做的任何事情。

    protected Z doInBackground(X...x){

    }
   protected void onProgressUpdate(Y y){

   }
  protected void onPostExecute(Z z){

  }

在后台操作完成后调用此方法。作为输入参数,您将接收doInBackland方法的输出参数。

X,Y和Z类型呢?

从上面的结构可以推断出:

 X – The type of the input variables value you want to set to the background process. This can be an array of objects.

 Y – The type of the objects you are going to enter in the onProgressUpdate method.

 Z – The type of the result from the operations you have done in the background process.

我们如何从外部类调用此任务?只需使用以下两行:

MyTask myTask = new MyTask();

myTask.execute(x);

其中x是类型X的输入参数。

一旦我们的任务运行,我们就可以从“外部”了解它的地位。使用“getStatus()”方法。

 myTask.getStatus();

我们可以获得以下情况:

跑动-指示任务正在运行。

待决-指示任务尚未执行。

完成-表示onPostExecute(Z)已完成。

用户回答回答于

请参阅下列链接:

  1. http://developer.android.com/reference/android/os/AsyncTask.html
  2. http://labs.makemachine.net/2010/05/android-asynctask-example/

您不能传递超过三个参数,如果您只想传递一个参数,那么对其他两个参数使用“无效”。

1. private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> 


2. protected class InitTask extends AsyncTask<Context, Integer, Integer>

异步任务由运行在后台线程上并在UI线程上发布其结果的计算定义。异步任务由3种通用类型定义,称为Params、Process和Result,以及4个步骤,称为onPreExecute、doInBackplace、onProgressUpdate和onPostExecute。

扫码关注云+社区