Android支持库是否默认使用最新Android版本的本机库?

时间:2014-12-12 14:37:46

标签: android android-support-library android-5.0-lollipop android-recyclerview

启动任何Android项目时,开发人员必须在使用支持库或本机库之间进行选择。

在Lollipop上使用支持库会发生什么?如果我使用ToolBar support library object,并且它在Lollipop设备上运行,那么库是否会自动默认为native implementation of the Toolbar

我假设本机库比支持库更有效。

编辑:现在以工具栏为例,而不是RecyclerView

1 个答案:

答案 0 :(得分:0)

  

在Lollipop上使用支持库会发生什么?如果我使用ToolBar支持库对象,并且它在Lollipop设备上运行,那么库是否会自动默认为工具栏的本机实现?

不,它没有,正如你所看到的那样the source code for the backported Toolbar。当前appcompat-v7工件中的任何内容都不会委托给本机实现。

Android支持包非常庞大,不同的东西会有不同的表现。最好的经验法则是以Compat结尾的Java类(例如,NotificationCompat),该类将根据API级别尽可能委托给本机实现,并将实现一个反向端口或只是" no-op"不存在本机实现的请求。而且,尽管名称,AppCompat不是Java类,这就是为什么它仍然符合这个经验法则。 : - )

  

我假设本机库比支持库更有效。

不适用于"有效"这个词的大多数定义。它将保存APK大小。在速度和内存消耗方面,不太可能有任何显着差异。

  

启动任何Android项目时,开发人员必须在使用支持库或本机库之间进行选择。

如上所述,"支持库"广泛,应用程序可能会使用Android支持包中的各种东西和不支持的东西。例如,在使用原生操作栏和片段时,应用可能会使用NotificationCompat(例如,改善对Android Wear和Android 5.0锁屏通知的支持)。