启动任何Android项目时,开发人员必须在使用支持库或本机库之间进行选择。
在Lollipop上使用支持库会发生什么?如果我使用ToolBar support library object,并且它在Lollipop设备上运行,那么库是否会自动默认为native implementation of the Toolbar?
我假设本机库比支持库更有效。
编辑:现在以工具栏为例,而不是RecyclerView
答案 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锁屏通知的支持)。