gpt4 book ai didi

android - 异步任务.. 无法调用 executeOnExecutor()

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:12 24 4
gpt4 key购买 nike

我的 android 应用程序中运行的一些异步任务有点问题。由于我正在使用一些网络 IO,它有时可能需要比预期更长的时间并阻止其他异步任务运行。

我需要保持目标和最小 sdk 版本不变,但它们的目标是 targetSdkVersion="15"和 minSdkVersion="8"。我需要它,以便在调用异步任务时,我可以检查设备 SDK,如果大于 11,它可以调用 executeOnExecutor() 而不是只执行以允许设备并行运行这些任务并防止此阻塞操作。

虽然我的目标 SDK 为 15,但我使用的设备的 SDK 为 17。

但是调用时:

MyAsyncTask(this).executeOnExecutor();

我得到一个错误“方法 executeOnExecutor() 未定义类型”,我唯一可用的选项是:

MyAsyncTask(this).execute();

MyAsyncTask 是一个类对象,它扩展了 AsyncTask 并重载了标准方法 onPreExecute、doInBackground、onProgressUpdate 和 onPostExecute。

我尝试遵循此处列出的一些建议... http://steveliles.github.io/android_s_asynctask.html

最佳答案

将构建目标设置为 API 级别 11 或更高级别。请注意,“build target” != “target SDK” (android:targetSdkVersion)。 “构建目标”在 Eclipse 上的“项目”>“属性”>“Android”中设置,或用于命令行构建的 project.properties

对于 executeOnExecutor() 的条件使用,另一种方法是使用单独的辅助方法:

  @TargetApi(11)
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);
}
}

然后您将使用此方法开始您的任务:

 executeAsyncTask(new MyTask(), param1, param2);

(不管你想传递多少参数给execute())

关于android - 异步任务.. 无法调用 executeOnExecutor(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16832223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com