错误消息:字段需要API级别11(当前最小值为9):android .os.AsynTask #THREAD_POOL_EXECUTOR

N S*_*rma 1 android lint android-asynctask

我正在使用AsyncTask网络操作并将其设置minSDKVersion为8.我正在尝试执行AsyncTask如何,它会给出红线错误然后我需要每次清理项目然后它的工作原理.

downloadAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Run Code Online (Sandbox Code Playgroud)

为了避免这些错误我能为此做些什么?

这里看截图这些@SuppressLint @TargetAPI的用途是什么,

在此输入图像描述

提前致谢.

Com*_*are 6

那个方法(executeOnExecutor())和那个字段(THREAD_POOL_EXECUTOR)是在API级别11中添加的.你minSdkVersion是9,因此你运行的某些设备将没有该方法或字段,你将崩溃.

要么提升你minSdkVersion的11,要么只使用executeOnExecutor()足够新的设备:

  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task,
                                          T... params) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
      task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
    }
    else {
      task.execute(params);
    }
  }
Run Code Online (Sandbox Code Playgroud)

  • @Williams`TargetAPI`意味着:我理解这段代码应该只在API 11及更高版本上运行,并且我保证这个代码将运行的唯一情况.`SuppressLint`意思是:不要打扰我,我不在乎. (2认同)