Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 可以多次调用同一个asynctask吗_Android_Android Asynctask - Fatal编程技术网

Android 可以多次调用同一个asynctask吗

Android 可以多次调用同一个asynctask吗,android,android-asynctask,Android,Android Asynctask,我可以根据某些条件调用相同的asynctask吗 例如: switch(item) { case 1: dataCommunicator.execute(); break; case 2: dataComminicator.exwcute(); break; . . . } class dataCommunicatoe extends AsyncTask{ . . . . . } 是的,一个好的方法是向自定义异步任

我可以根据某些条件调用相同的asynctask吗

例如:

switch(item)
{
  case 1:
    dataCommunicator.execute();
    break;
  case 2:
    dataComminicator.exwcute();
   break;
   .
   .
   .
}

class dataCommunicatoe extends AsyncTask{
  .
  .
  .
  .
  . 
}

是的,一个好的方法是向自定义异步任务传递一个接口,这样您就可以决定当它到达“OnPostExecute”时要做什么,并将同一个自定义异步任务重新用于多个片段/活动

是的,有可能:

通过传递如下参数,可以调用相同的异步任务:

if (someLogicIsTrue)
    new AsyncTaskOperation().execute("FETCHUSER");
else
    new AsyncTaskOperation().execute("VALIDATECREDENTIALS");
异步任务应为:

private class AsyncTaskOperation extends AsyncTask <String, Void, Void>
{
        String paramObject = "";

        @Override
        protected Void doInBackground(String... paramsObj) {
        paramObject = paramsObj[0];

        if ("FETCHUSER".equals(paramObject))
        {
              // OPERATION FOR  FETCH USER
        }
        else if ("VALIDATECREDENTIALS".equals(paramObject))
       {
             // OPERATION FOR VALIDATE CREDENTIALS.
       }
       return null;
     }

}
私有类AsyncTaskOperation扩展了AsyncTask
{
字符串paramObject=“”;
@凌驾
受保护的Void doInBackground(字符串…paramsObj){
paramObject=paramsObj[0];
if(“FETCHUSER”.equals(paramObject))
{
//获取用户的操作
}
else if(“VALIDATECREDENTIALS”.equals(paramObject))
{
//验证凭据的操作。
}
返回null;
}
}

我可以在asynctask中使用switch语句吗?可以,但您不必为此而强制使用.execute()。您可以使用自定义参数和构造函数创建自定义asyncTask,这通常更有用。检查此链接是否可以传递数据通信oE.execute(设备1);在doInBackground中的asyncTask中,我可以放置一个switch语句吗?表示int item=params[0];然后switch(item){..}不能使用
字符串的switch语句。但是使用
int
,这是可能的。