您的位置:首页 > 移动开发 > Android开发

Android Class requries API level 12

2015-12-04 08:37 393 查看
//创建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的代码中,解决方案应该相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: