Android 向AsynchTask doInBackground(Params…Params)添加更多参数

Android 向AsynchTask doInBackground(Params…Params)添加更多参数,android,android-asynctask,Android,Android Asynctask,我试图使文件操作类在后台异步调用其函数。我希望能够使用AsyncTask的doInBackground方法在文件操作之间切换,但是,当添加一个int参数用作切换时,我得到一个错误 class Files extends AsyncTask<String[], Void, Boolean> { private static final int COPY = 0; private static final int DELETE = 1; public boo

我试图使文件操作类在后台异步调用其函数。我希望能够使用AsyncTask的doInBackground方法在文件操作之间切换,但是,当添加一个int参数用作切换时,我得到一个错误

class Files extends AsyncTask<String[], Void, Boolean> {
    private static final int COPY   = 0;
    private static final int DELETE = 1;

    public boolean copy(String[] copyDir, String[] pasteDir) {
        return doInBackground(COPY, copyDir, pasteDir);
    }

    public boolean delete(String[] files) {
        return doInBackground(DELETE, files);
    }

    //Async operation handler
    protected Boolean doInBackground(int o, String[]...files) {
        Boolean task = false;
        try {
            //Operation switch
            switch (o) {
                case COPY:
                    task = copyFiles(files[0], files[1]);
                    break;
                case DELETE:
                    task = deleteFiles(files[0]);
                    break;
            }
        } catch(IOException e) {
            e.printStackTrace();
        }
        return task;
    }

    public boolean copyFiles(String[] inputPaths, String[] outputPaths) throws IOException {
        //Copy Logic
    }

    public boolean deleteFiles(String[] paths) throws IOException {
        //Delete Logic
    }
}
类文件扩展异步任务{
私有静态最终整型拷贝=0;
私有静态final int DELETE=1;
公共布尔复制(字符串[]copyDir,字符串[]pasteDir){
返回doInBackground(复制、复制、粘贴);
}
公共布尔删除(字符串[]文件){
返回doInBackground(删除,文件);
}
//异步操作处理程序
受保护的布尔doInBackground(int-o,字符串[]…文件){
布尔任务=false;
试一试{
//操作开关
开关(o){
案例副本:
任务=复制文件(文件[0],文件[1]);
打破
案例删除:
任务=删除文件(文件[0]);
打破
}
}捕获(IOE异常){
e、 printStackTrace();
}
返回任务;
}
公共布尔复制文件(字符串[]输入路径,字符串[]输出路径)引发IOException{
//复制逻辑
}
公共布尔删除文件(字符串[]路径)引发IOException{
//删除逻辑
}
}

类似于此实现的东西是否可能?如果没有,,抽象方法有什么不允许这样做的?

使用多个构造函数/setter传入一组要传递的参数,并在doInBackground方法中根据setter方法传递给AsyncTask的操作类型进行操作。

我认为不能传入两个参数背景法。阅读这份文件。这将明确您的概念。此实现是不可能的。但是,您可以通过创建一个getter setter类来实现同样的目的,该类用于保存多种类型的值,然后将其发送到
doInBackground
方法,如vargs arguments所示。我该怎么做呢?是否必须使用对象数组并将其作为varargs参数传入?