随着安卓版本的不断更新,新的API不断涌出,有时候高版本的API会在低版本crash的。
如果minSdkVersion设置过低,在build的时候,就会报错(Call requires API level 17 (current min is 9));
这时候为了编译可以通过,可以添加 @SuppressLint("NewApi")
或者 @TargeApi(9)注解。
这样只是编译通过,运行时依然会crash的。
正确的做法
为了运行时不报错, 需要:
- 判断运行时版本,在低版本系统不调用此方法
-
同时为了保证功能的完整性,需要提供低版本功能实现
小结:在使用高于minSdkVersion
API level的方法需要:
- 如果用
@TargeApi($API_LEVEL)
可以编译通过, 那就不使用@SuppressLint("NewApi")
; - 运行时判断API level; 仅在足够高,有此方法的API level系统中,才调用此方法;
- 保证功能完整性,保证低API版本通过其他方法提供功能实现。
容易忽略的API小细节,好在,ide开发工具,会自动提醒你的。