AsyncTask <string,void,=“”string =“”>泛型类型。的Android </串,>

时间:2012-11-26 12:50:16

标签: android android-asynctask

我一直在使用这个AsyncTask进行几个项目,但仍然没有得到<String, Void, String>的含义。这些是否意味着未实现方法的参数类型?是否有任何命令(分别对应于String,Void,String的方法)?

3 个答案:

答案 0 :(得分:9)

来自Android Docs AsyncTask页面:

android.os.AsyncTask<Params, Progress, Result>

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

  

参数,执行时发送给任务的参数类型。

     

进度,后台计算期间发布的进度单元的类型。

     

结果,后台计算结果的类型。

现在用简单的话语理解:

参数:(在您的情况下为String)是AsyncTask所采用的参数。当您致电execute方法

时,您必须传递此信息

进度:(在您的情况下为Void)是进度的类型。虚空意味着你没有使用它。如果是Integer,你可以使用像10,20,30这样的值......并使用它们在屏幕上显示进度条。

结果:(在您的情况下为String)是AsyncTask返回的结果。你正在返回一个字符串。您可以返回任何所需的对象。

简单地说,它有点像Params是参数的方法,Result是返回类型,进度告诉你处理进度的状态。

如需进一步了解,请参阅this tutorial,同一页面的引用可能会有所帮助:

  

AsyncTask<TypeOfVarArgParams, ProgressValue, ResultValue>

     

将TypeOfVarArgParams作为传递给doInBackground()方法   input,ProgressValue用于进度信息和ResultValue   必须从doInBackground()方法返回并传递给   onPostExecute()作为参数。

答案 1 :(得分:6)

它描述了in docs

android.os.AsyncTask<Params, Progress, Result>

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

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(但总是必须有3种类型)

答案 2 :(得分:1)

AsyncTask中的Ist参数是指在doInBackground中传递的参数,第二个参数是在onProgressUpdate中传递的,第三个参数是在onPostExecute中传递的。我们可以根据功能使用任何合适的数据类型。下面给出了参数类型(String,Integer,String)调用的示例。

private class MyTask extends AsyncTask<String, Integer, String>
        {   
            protected String doInBackground(String... u)
            {
                // do something in background
                return null;    
            }
            protected void onPreExecute() 
            {               
                // do something before start
                    }
            public void onProgressUpdate(Integer... args)
            {    

            }                      
            protected void onPostExecute(String result) 
            {                                   
                              //  do something after execution  

            }
        }