匿名 AsyncTask 中的构造函数,例如“new AsyncTask<Exercise,Void,Void>()”?

Posted

技术标签:

【中文标题】匿名 AsyncTask 中的构造函数,例如“new AsyncTask<Exercise,Void,Void>()”?【英文标题】:Constructor in an Anonymous AsyncTask like this "new AsyncTask<Exercise,Void,Void>()"? 【发布时间】:2020-12-16 11:26:33 【问题描述】:

将每项工作都放在我的代码中某处的 AsyncTask 类中对我来说真的很痛苦,但代码没有执行,我希望他执行。

我曾经使用new AsyncTask&lt;Void, Void, Void&gt;() 函数将代码放在我期望的位置,这对每个人都适用。

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

有没有办法在这个匿名 AsyncTask 中有一个构造函数?我认为没有,但如果有办法将代码保持在原位,但将变量传递到异步任务中,那就太好了。

可能是这样的:

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

        ;

【问题讨论】:

【参考方案1】:

以下是将您的练习参数传递给匿名 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();

【讨论】:

以上是关于匿名 AsyncTask 中的构造函数,例如“new AsyncTask<Exercise,Void,Void>()”?的主要内容,如果未能解决你的问题,请参考以下文章

AsyncTask没有零参数构造函数

使用集合调用构造函数类并从 asyncTask 获取 sharedpreferences(无法传递上下文)

Android O:AsyncTask分析

Android O:AsyncTask分析

3-6:类与对象下篇——构造函数中的初始化列表匿名对象和explicit关键字

在单个语句中创建和调用匿名函数