在asynctask中传递多个值并接收相应的结果

时间:2014-03-13 14:50:30

标签: android android-asynctask

在我的Android应用程序中,我试图在启动画面期间传递一个asynctask多个值,因此它将返回与值一样多的结果。

myasynctask task=new myasynctask()
task.execute("value1","value2",etc...)

并返回在其他活动中使用result1,result2等

怎么做?

3 个答案:

答案 0 :(得分:0)

您可以将它们封装在DataTransferObject中。

public class AsyncTaskDTO{
// implemnt your values
private int foo;
private boolean bar;
// getter and setters.
}

您还可以传递地图,数组或列表。

as ex:
AsyncTaskDto dto = new AsyncTaskDto();
dto.setFoo(2);
task.execute(dto);


List<String> values = new LinkedList<String>();
values.add("value1");
task.execute(values);

答案 1 :(得分:0)

当您在代码中执行任务时,您将获得params [0],parmas [1]等中的值,以将相同数量的结果返回到onPostExecute我建议使用数组或者名单。

private class DownloadFilesTask extends AsyncTask<URL, Integer, ArrayList<String>> {
    protected Long doInBackground(URL... urls) {
        ArrayList<String> result = new ArrayList<String>();
        for (int i = 0; i < params.length; i++) {
            value = params[i];
            //do stuff
            result.add(whatever);
        }
        return result;
    }

    protected void onPostExecute(ArrayList<String> result) {
        //do stuff...
    }
}

来自https://developer.android.com/reference/android/os/AsyncTask.html

答案 2 :(得分:-1)

public interface myInterface{
        public abstract void taskComplete(value1,value2... etc);
    }