CustomAsync任务重构常见调用

时间:2016-02-25 19:35:19

标签: android abstract-class

我有一个类文件

TMDB_Async.java

public class TMDB_Async {
  public class GetGenres extends CustomAsyncTask<Object, Void, String> {...}
  public class GetMovies extends CustomAsyncTask<Object, Void, String[][]> {...}
}

注意:这是有意义的:

CustomAsyncTask.java

public abstract class CustomAsyncTask<T,T,T> extends AsyncTask<T,T,T> {...}

然后我想使用它......类似于:

SomeActivity.java

new TMDB_Async.GetGenres(textView).execute(id);

但是 red-squiggly highlight 告诉我TMDB_Async不是封闭的类。它邀请我进行静态导入,它会自动生成为xyz....TMDB_Async.*,但这并不能解决问题。如果我指定xyz...TMDB_Async.GetGenres,则最后一位全部为红色。如果我删除static,它也无法解决我的问题。所以我在这里做错了。

编辑:我想把它变成单身,添加代码:

private static TMDB_Async mInstance = null;

private TMDB_Async(){
    mInstance = new TMDB_Async();
}

public static TMDB_Async getInstance() {
    if (mInstance == null) {
        Class clazz = TMDB_Async.class;
        synchronized (clazz) {
            mInstance = new TMDB_Async();
        }
    }
    return mInstance;
}

但这实际上也无法解决问题。

如何正确设置?

1 个答案:

答案 0 :(得分:1)

您的内部课程GetGenresGetMovies必须为static。 非static内部类只能从父对象实例化。