禁止使用的AsyncTask的,使用自定义的AsyncTask(Disable use of Asy

2019-09-18 15:23发布

我有以下执行AsyncTask ,允许多AsyncTask s到并行运行:

public abstract class MyAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {

    public AsyncTask<Params, Progress, Result> executeCompat(Params... params) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            return executeOnExecutor(THREAD_POOL_EXECUTOR, params);
        } else {
            return execute(params);
        }
    }
}

现在,为了避免混淆和意外使用正常AsyncTask ,我想从我的代码阻止访问:

  • AsyncTask类,只有MyAsyncTask应该被使用。
  • execute()函数MyAsyncTask

是否有可能做到这一点?

Answer 1:

我这样做的想法是有点不同。 相反,扩展的AsyncTask类,你可以创建需要作为一个参数的方法AsyncTask要使用。 下面是一个例子:

public void executeAsyncTask(AsyncTask asyncTask) {

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        asyncTask.executeOnExecutor(THREAD_POOL_EXECUTOR, params);
    } else {
        asyncTask.execute(params);
    }
}

有了这个,你只需要实例你想,无需担心你所提到的,因为你会被延长的问题,使用的AsyncTask Android's AsyncTask已经重写类的execute方法,你想要的方式。 因此,可以说,你已经定义了一个AsyncTask命名customAsyncTask ,执行它,你只需要调用executeAsyncTask(new customAsyncTask(your_params)); 您可以定义在上述方法static类(制作方法也static ),方便使用。

希望帮助:)



Answer 2:

不导入AsyncTask ,只导入您MyAsyncTask类。 这样,你的类是唯一可用的选项。

我想你可能会覆盖在你的主文件中的AsyncTask方法。 你必须有一个新的类文件为您MyAsyncTask,然而,否则将不能正确地继承它。



文章来源: Disable use of AsyncTask, using custom AsyncTask