Java 具有嵌套异步任务的Android类

Java 具有嵌套异步任务的Android类,java,android,class,android-asynctask,inner-classes,Java,Android,Class,Android Asynctask,Inner Classes,我对Java比较陌生 我正在编写一个Android应用程序,现在我将回顾我的代码,整理并坚持我的编码结构,使之更符合最佳实践风格 我正在构建我认为合适的方法和类,以避免产生大量重复代码。我发现自己正在尝试创建一个类(例如HeavyStuff.java),其中包含几个AsyncTask方法(例如MyTask1和MyTask2)。从活动调用类时,我希望在某个点执行MyTask1,在其他点执行MyTask2。我试图分别使用以下内容: HeavyStuff.MyTask1 myTask1 = new H

我对Java比较陌生

我正在编写一个Android应用程序,现在我将回顾我的代码,整理并坚持我的编码结构,使之更符合最佳实践风格

我正在构建我认为合适的方法和类,以避免产生大量重复代码。我发现自己正在尝试创建一个类(例如HeavyStuff.java),其中包含几个AsyncTask方法(例如MyTask1和MyTask2)。从活动调用类时,我希望在某个点执行MyTask1,在其他点执行MyTask2。我试图分别使用以下内容:

HeavyStuff.MyTask1 myTask1 = new HeavyStuff.MyTask1();
myTask1.execute();

问题是,我得到一个错误,说“HeavyTest不是一个封闭类”。我的班级是这样的:

package com.wizzkidd.myapp;

import android.os.AsyncTask;

public class HeavyStuff {

    public class MyTask1 extends AsyncTask<String, String, String> {
        //...
        //...
    }

    public class MyTask2 extends AsyncTask<String, String, String> {
        //...
        //...
    }
}

它是有效的,但这样做有什么意义(如果有的话)?这是一种不好的做法吗?

我知道您将
MyTask1
MyTask2
放在同一个类中,因为它们相似,但总的来说这并不理想

如果您计划在整个代码库中创建
MyTask1
的新实例以及
MyTask2
的新实例,那么它们应该位于各自完全独立的类中(即
MyTask1.java
仅包含类
MyTask1

通过将它们放在同一个java包中,您仍然可以将它们“放在一起”,例如:

package.heavystuff

.

我找到了我问题的答案。我最初发布了我认为是一个编辑解决方案,但为了澄清,这是我的工作答案:

HeavyStuff.MyTask1 myTask1 = new HeavyStuff().new MyTask1();
myTask1.execute();
可能重复的
package.heavystuff
HeavyStuff.MyTask1 myTask1 = new HeavyStuff().new MyTask1();
myTask1.execute();