Android Class requries API level 12

//创建cache ,相当于一个map
private LruCache<String,Bitmap> mCaches ;

public ImageLoader(){
//获取最大可用内存
int maxMemory = (int) Runtime.getRuntime().maxMemory() ;
//设置缓存大小值
int cacheSize = maxMemory / 4 ;
mCaches = new LruCache<String,Bitmap>(cacheSize){
@Override
protected int sizeOf(String key, Bitmap value) {
//在每次存入缓存的时候调用,返回实际的大小
return value.getByteCount();
}
} ;

}

【错误描述】

再利用LruCache类进行一步缓存加载时,使用了LruCache<String, Bitmap>,会出现标题所示信息,requires API level 12

ctrl+1,会出现提示@SuppressLint("NewApi")

@SuppressLint("NewApi")的作用是屏蔽android lint错误,在安卓代码中,我们有时候以后会使用比我们在AndroidManifest 中设置的android:minSDKVersion 版本更高的方法,此时编译器会提示警告

· 解决方法是在方法上加上@SuppressLint(‘NewApi’)

作用仅仅是屏蔽android lint错误,所以在方法中还要判断版本做不同的操作。》》》》》》具体如何操作有待完善。

【原因分析】

可能跟提示信息有关,在创建项目是,我们设置最低版本API level,我的设置的是8,因此,Eclipse检查我调用的API之后,发现版本号不能向低版本兼容,比如我用的LruCache,其中很多方法都是需要API level 12,自然就超过了8,所以提示错误。

【解决方案】

google得到办法:

Right click on the project folder > Android tools > Clear Link Markers,此方法只能临时解决,如果调用的模拟器版本过低,调试完之后还会出现此错误。


stackOVERflow中提示如下:

My best guess is that Lint thinks my minSdkVersion is 1, which it isn't; my manifest declares minSdkVersion="8". I've tried the following in an effort to fix this:
Restarting Eclipse
Restarting my computer
Project > Clean
Manually deleting /bin and /gen to force hem to be generated again

参考:http://stackoverflow.com/questions/10322482/android-lint-erroneously-thinks-min-sdk-version-is-1


根本方法:

把manifest文件中的user-sdk 的android:minSDKVersion改为报错的那个高版本就OK。如下:

<uses-sdk

        android:minSdkVersion="12"   //这个之前是8

        android:targetSdkVersion="18" />

【扩展】

  因为设置了最低版本,但使用了高版本API的代码中,解决方案应该相同。




你可能感兴趣的:(Android Class requries API level 12)