我知道appcompat库为在早期版本的Android下运行的应用程序提供了比应用程序目标级别更多的功能。我的问题是,如果我在设备上检测到早期版本的Android,如果我从不调用任何方法,是否需要包含appcompat库。换句话说,appcompat库是否有后续类的存根以防止Dalvik动态类加载器崩溃,或者如果没有动态引用这些类,那么它们是不需要的吗?
// Will Android/Dalvik barf if this class is loaded on a pre-Honeycomb device?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
}
答案 0 :(得分:2)
我的问题是,如果我在设备上检测到早期版本的Android,如果我从不调用任何方法,是否需要包含appcompat库。
不,那么你就不会需要了。 appcompat库不仅仅是ActionBar
的后端口。它还包括一些比Gingerbread更新的平台的小修补程序。 Here就是一个例子。正如您所看到的,Appcompat ActionBar
的{{3}},HC和ICS的ActionBar实现都来自基础实现。但一般情况下,如果您在早期版本中未使用ActionBar
,则不需要它。 ActionBar
足够稳定,使用appcompat库为更高版本创建的修补程序不是很重要。
如果你在Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
中包装一些内容,那么保证不会在HoneyComb之前的版本中调用它,所以不,你可以继续为API执行此操作,稍后介绍的不会破坏早期版本。