Java 如何支持不同的android操作系统?
我有一些问题。 我有两个方法,一个是用Api 11及以上调用的,另一个是旧Api调用的 我的项目有以下设置: 项目构建目标-谷歌API 2.3.3 清单文件:Java 如何支持不同的android操作系统?,java,android,android-asynctask,Java,Android,Android Asynctask,我有一些问题。 我有两个方法,一个是用Api 11及以上调用的,另一个是旧Api调用的 我的项目有以下设置: 项目构建目标-谷歌API 2.3.3 清单文件: uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" 我的代码: abstract class DoAsyncRequest { protected abstract void DoRequest(Connection conn) throws Exc
uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="18"
我的代码:
abstract class DoAsyncRequest {
protected abstract void DoRequest(Connection conn) throws Exception;
}
class DoAsyncRequestLegacy extends DoAsyncRequest {
protected void DoRequest(Connection conn) throws Exception{
new FetchTask(conn).execute();// FOR OLD API
}
}
@TargetApi(11) class DoAsyncRequest_SDK11 extends DoAsyncRequest {
protected void DoRequest(Connection conn) throws Exception{
new FetchTask(conn).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null); //FOR NEW API, but compiller says, that THREAD_POOL_EXECUTOR cannot be resolved or is not a field
}
}
致以最诚挚的问候。通常我会在调用正确的方法之前进行测试:
// change with the version you want to test
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
} else {
}
新建FetchTaskconn.executeOnExecutorAsyncTask.THREAD\u POOL\u EXECUTOR,null//对于新的API,但编译器说,线程池执行器无法解析,或者不是fieldP.S。我使用您的代码ifBuild.VERSION.SDK\u INT您应该始终使用最新版本作为构建目标。如果没有,编译器CQN将找不到新方法。@nicopico我已将项目生成目标设置为最新版本,但现在我看到错误,在生成路径错误未知之前无法生成项目Java问题请解释有关您的问题的详细信息。我已根据您的建议更改了代码。。但是我无法从api得到回应。。在我更改它之前,我可以从较低版本的api中获得响应。该代码应该可以按预期工作。新建FetchTaskconn.execute;是蜂窝之前的操作系统。新建FetchTaskconn.executeOnExecutorAsyncTask.THREAD\u POOL\u EXECUTOR,null;这将适用于操作系统蜂巢和更高版本。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
new FetchTask(conn).execute();// FOR OLD API
} else {
new FetchTask(conn).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
}