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的代码中,解决方案应该相同。
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的代码中,解决方案应该相同。
相关文章推荐
- Dream_10_21_ViewPager_Tab
- Android示例java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.
- 2015年12月广师android群内容分享
- 安卓开发学习笔记(三)
- Android5.x Notification应用解析
- Android5.x Notification应用解析
- 在android开发中使用multdex的方法-IT蓝豹为你整理
- Android 6.0电源管理方式
- 谈谈源码中的SparseArray
- LruMemoryCache和LruCache
- Android Touch事件的分发机制
- Android Studio如何使用SlidingMenu
- Fragment的两个子类ListFragment和DialogFragment的应用Demo
- Android测试教程10--monkey Test
- android: OnClickListener cannot be resolved to a type
- Ubuntu 14.04.2 移植FFmpeg 2.8.3 到Android平台
- 安卓开发技术:监听软键盘的显示与隐藏
- Android下的图片缓存简单实现(避免软引用缓存)
- Android AccessibilityService(辅助服务)学习
- Android第三方开源FloatingActionButton(com.getbase.floatingactionbutton): FloatingActionsMenu【3】