像这样的“新AsyncTask <Exercise,Void,Void>”这样的匿名AsyncTask中的构造方法?

问题描述

把所有工作都放在代码中某个地方的AsyncTask类中,这确实让我很痛苦,但是代码无法执行,我希望他可以执行。

我以前使用new AsyncTask<Void,Void,Void>(){}函数将代码放在我期望的位置,并且每个人都可以正常使用。

如果我想将AsyncTask与父类的变量一起使用,它会警告我可能发生内存泄漏。

在此匿名AsyncTask中是否可以使用构造函数?我认为没有,但是如果有一种方法可以将代码保留在适当的位置,但是可以将变量传递到异步任务中,那将非常好。

也许是这样的:

        AsyncTask<Exercise,Void> insert = new AsyncTask <Exercise,Void>(){
            private Exercise mExercise;
            
            public AsyncTask(Exercise exercise){
                mExercise = exercise;
            }
            
            @Override
            protected Void doInBackground(Exercise... exercises) {
                mExerciseDAO.insertExercise(exercises[0]);
                return null;
            }

        };

解决方法

以下是将您的Exercise参数传递给匿名AsyncTask的方法:

new AsyncTask<Void,Void,Void>(){

    Exercise mExercise;

    @Override
    protected Void doInBackground(Void... params) {

        // Your code ...
        mExerciseDAO.insertExercise(this.mExercise);
        return null;
    }

    public AsyncTask setExercise (Exercise exercise){
        this.mExercise = exercise;
        return this;
    }

}.setExercise(exercise).execute();

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...