如果我将最低SDK版本设置为16(Jelly Bean 4.1)并且我已经以与此API级别兼容的方式编写了我的大部分项目,但是我有一个小方法需要SDK版本25,这会阻止整个应用程序在使用Jelly Bean平台的设备上运行吗? 或者它会允许他们安装它,只有那个特定的部分不起作用?
答案 0 :(得分:1)
您可以使用注释来删除方法中的这些问题。
@TargetApi(25)
1.您需要使用您正在讨论的抽象方法创建一个抽象类。
public abstract class YourClass {
public abstract void doSomething();
}
2.两个实现。一个用于旧版本,另一个用于新版本,在新版本中放置@TargetApi。
传统版本:
public class YourClassLegacy extends YourClass {
public void doSomething(){
//Legacy method
}
}
实施25版本:
@TargetApi(25)
public class YourClassNew extends YourClass {
public void doSomething(){
//25 version method
}
}
3.在您调用此方法的方法中( doSomething() ),您需要实现此方法。
public static void methodFoo(Context context) {
if (android.os.Build.VERSION.SDK_INT >= 25) {
//call to YourClassNew.doSomething();
}else{
//call to YourClassLegacy.doSomething();
}
}
答案 1 :(得分:0)
然后你需要自己编写版本25并重新编写旧的做法以跟上趋势。 Gradle WILL和MAY有更高的API问题不支持某些方法,尤其是人们在自己的方法中使用的库
答案 2 :(得分:0)
您应该使用支票为桤木版本提供替代方案。
if(android.os.Build.VERSION.SDK_INT >= 25) {
// use new method
} else {
// use alternative method
}