Android AsyncTask 作为方法参数

标签 android parameters android-asynctask

我正在开发一个使用大量 AsyncTasks 的应用程序。当我开始参与这个应用程序的编码时,targetSdkVersion 被设置为 10,所以我们没有使用 AsyncTasks 的问题,因为它们都是在并行后台线程上执行的。由于我们将 targtSdkVersion 设置为 17,因此我们遇到了一些任务问题,因为它们现在在单个后台线程上执行。为了解决这个问题,我发现了以下专门使用并行任务的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
    myTask.execute();
}

现在,因为我们有几个任务需要这些代码行,所以我想在我们自己的 Utils 类中编写一个方法,以这种方式执行任务……但我无法实现,因为我不能由于'Param |,t将不同的任务作为参数传递给方法进度 |结果的内容因一项任务而异。 有没有办法实现我们的目标?有任何想法吗?

最佳答案

由于 AsyncTask 是参数化类,因此您需要使用泛型。像这样:

@SuppressLint("NewApi")
static <P, T extends AsyncTask<P, ?, ?>> void execute(T task, P... params) {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
  } else {
   task.execute(params);
  }
}

像这样使用:

MyAsyncTask task = new MyAsyncTask();
Utils.execute(task);

关于Android AsyncTask 作为方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077735/

相关文章:

android - osmdroid - 在 map 上添加一个区域

android - 是否可以从 google drive API 获取上传文件的链接

php - Cake PHP 使用 url 中的参数重定向

android - 异步任务和 https android

java - Activity 中的 AsyncTask 链接(回调?)

android - iOS/Objective-C 相当于 Android 的 AsyncTask

php - 网站适合平板电脑的屏幕,视口(viewport)不工作?

java - 从另一个 Activity 返回时 ArrayList 为 null

c++ - 在 C++ 中复制指针

r - 对 R 术语 : Attributes, 参数和参数感到困惑