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

Android 在asynctask中传递多个值并接收相应的结果,android,android-asynctask,Android,Android Asynctask,在我的Android应用程序中,我试图在启动屏幕期间传入一个asynctask多个值,因此它将返回与值一样多的结果 myasynctask task=new myasynctask() task.execute("value1","value2",etc...) 并返回用于其他活动result1、result2等 如何做到这一点?您可以将它们封装在DataTransferObject中 public class AsyncTaskDTO{ // implemnt your values pri

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

myasynctask task=new myasynctask()
task.execute("value1","value2",etc...)
并返回用于其他活动result1、result2等


如何做到这一点?

您可以将它们封装在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);
例如:
AsyncTaskDto dto=新的AsyncTaskDto();
dto.setFoo(2);
任务执行(dto);
列表值=新建LinkedList();
价值。添加(“价值1”);
任务。执行(值);

当您在代码中执行任务时,您将获得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...
    }
}
私有类下载文件任务扩展异步任务{
受保护的长doInBackground(URL…URL){
ArrayList结果=新建ArrayList();
对于(int i=0;i

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...
    }
}