我正在开发一个Android库,我想要支持尽可能多的API版本。我偶然发现了AsyncTask的一个问题,并在这里找到了一个answer。建议使用的代码是:
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) {
    task.execute(params);
} else {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}我的问题是,我如何包含建议的代码并支持尽可能低的API级别?我应该引用哪个API版本?我应该在uses sdk标签内部清单中写什么?
由于AsyncTask中的字段THREAD_POOL_EXECUTOR仅在接口级别11中可用,可以将此代码编译到更低级别吗?
谢谢!
发布于 2013-06-12 22:12:21
假设您的清单中存在以下行
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>这意味着您使用的是API-17的特性,但为了确保向后兼容性,您的应用程序可能会在最低API-8 (Froyo)上启动。
根据您的示例,对API-17或更低版本使用THREAD_POOL_EXECUTOR是可以的。在Froyo设备上运行你的代码也是可以的。因为在这种情况下不会使用THREAD_POOL_EXECUTOR字段。
发布于 2013-06-12 22:09:36
在清单集API中,这是您希望支持的最低android:minSdkVersion="minimumApiYouNeed"和android:targetSdkVersion="maximumApi"。这是将用于编译代码的api。这样,您将能够执行类似于您在那里编写的内容,如果您曾经编写过不受最低api支持的内容,编辑器将通知您,但如果您进行检查,它将正常工作
发布于 2013-06-12 22:00:09
您必须使用API11或更高级别,除非您能找到在提供THREAD_POOL_EXECUTOR实现的早期API级上工作的库。此外,请查看Google是否提供了任何后端口或支持库,以便在API11之前实现此功能。
https://stackoverflow.com/questions/17067399
复制相似问题