作家
登录

安卓开发常用工具和第三方库汇总

作者: 来源: 2017-09-27 12:54:01 阅读 我要评论

如不雅你定位较低端的设备,你在旧设备上有更多的内存需求,我建议你应用 Fresco。除此之外,我会保持 Picasso 和 Glide。

内存 - 泄漏

Get more development news like this

LeakCanary

LeakCanary 是当今内存泄漏的神器,它可以赞助你找到内存泄漏的处所。泄漏不是所有的内存问题,然则值得留心。当你将 LeakCanary 添加到应用法度榜样中时,它会主动开端不雅察你的 activity 的内存泄漏。有一个我亲眼所见的误用是,他们将 LeakCanary 添加到应用法度榜样中。修复一个或两个泄漏,然后就认为再没有更多的内存泄漏了。它只监督了 activity。如不雅你在这里应用这个代码( 看幻灯片 ),你可以让它监督 fragment。这并不料味着你不会在别处泄漏内存。activity 和 fragment 是监测的好处所,但如不雅你没有将不雅察者设置为对象,你是不知道所有的泄漏的。

简单来说,它的工作道理很酷。作为你引用的任何对象的弱引用:将其附加到你不再被引用的内容中。你把它放在 destroy 代码段。然后它做垃圾收受接收。如不雅对象仍然存在,这就是内存泄漏,所以它知道什么对象依旧存在。它给你那个 home fragment 现场的相干引用。我认为这很难解得(*有些人认为这很简单,有人认为这很难。)

这里有个 view 的例子来做点简单解释( 见幻灯片 )。你大年夜底部开端(这就是泄漏的器械)。我有 home fragment。 它被 pin grid fragment 引用 - pin grid fragment 是这个对象的父亲。然后我们有这个奇怪的$ 0 - 它解释说,这是一个可运行的对象。对象内有一个处理法度榜样包含一个 runnable。这段代码(这不是我的),它是 Android 操作体系的,是处理法度榜样的代码。处理法度榜样有个 runnalbe 正在运行。我须要确保处理法度榜样不再保存 runnable。在这种情况下,我可以在视图的 destroy 中清除所有的 runnable 和处理法度榜样,这将修复这个内存泄漏。

WeakHandler

你还可以应用这个随机对象 WeakHandler,这使得处理法度榜样引用都是弱引用。如不雅你触发一个垃圾收受接收,就可以收受接收它们。它的缺点是可以被垃圾收受接收 - 如不雅你不欲望它们被垃圾收受接收,那可能会出现意想不到的工作。值得留意的是,我碰到的大年夜多半内存泄漏都是无效的,它平日是一个正在运行的 non-missed 的类持有外部类 (这是最常见的处所) 。对于你的内存泄漏,还须要一个 bug 分类的办法。没有什么比你手机上有 70 个内存泄漏, 而你不知道下一步该做什么更糟糕了。作为一个团队,弄清跋扈当我们发明内存泄漏时要做什么,老是一个好主意。

UI

我们都知道我们一向深陷泥潭。Activity 是旧标准。因为你想重用,所以有了 fragment。然则最后我们用 fragment 把 UI 显示做的异常复杂。尝尝另一种办法,基于视图的架构,它更风行。在基于视图的架构里,你有一个框架构造,而不消处理任何原生的 Android navigation 的器械,你可以用你想要的视图调换内部的框架构造里的任何器械。欲望这可以或许解决 fragment 的复杂性。

fragment 已经被简化了,并且更新了版本,它们如今加倍稳定,然则人们依旧争辩着须要有基于视图的架构。如不雅我们遵守这个论点,我们应当看看一些库(图形的底部, 看幻灯片 )。

基于视图的架构

这个架构是由 Mortar 和 Flow 惹人的。我信赖他们是第一批普及基于视图的架构的库。 Flow 真正地遵守了基于视图的架构,然则它们往往是一路的,而 Mortar 主如果 MVP 模式。当你开端实现基于视图的架构时,请留意这个奇怪的处所。

你还可以找到些更奇怪的处所,那就是如不雅你的应用是基于 View 的话,你会碰到些随机的问题,因为这个库不是基于 View 的。它是基于 activity 的, 如不雅你的应用是基于 view 的话,你得本身去解决那些问题。比如基于 View 的标准问题,例如 on-activity 的行动,许可等等。即使是撤退撤退按钮和导航,你都不得不本身去解决,只要你是基于 View 的。

Mortar 和 Flow完成根本的导航功能,但它们并不解决所有常见问题(例如屏幕上保存的状况)。

Conductor恰是为这些基于 View 的视图而生的,它创建了一个解决筹划:比如保存状况,转换等等。然则你仍然会碰到兼容性问题。总的来说,他们是异常好的,他们是架构弗成知的,所以你可以采取你本身的 MV。

Scoop 来自 Lyft。他们在产品中应用它。它是经由产品测试的基于视图架构的解决筹划。它们不保存状况,所以 Lyft 无法保存状况。在你将要应用基于视图的架构的重要常见问题中,这是最大年夜的问题。切换很轻易应用,但也很有限,这对于基于视图的体系构造来说有点令人掉望,因为在这种架构下,你往往可以实现很好的切换。

总的来说,如不雅你不须要保存状况,Scoop 是可用的,最安然的产品。Conductor 也很好。我会推荐这两个库。

有几个很好的 MVP 的库。MVP 的根本思惟是把逻辑代码分别出来,如许视图部分,Core Android 的器械,会放在一路,然后 presenter 也是分开的,我们可以单位测试这个 presenter。理论上,我们可以改变视图,而不必完全重写营业逻辑。

Nucleus也很类似。 Mortar ,作为 Mortar 和 Flow 的一部分,是它们早期的版本,它们越进级问题越多。我看到公司经常本身 构建 MVP :在创建时,你将启动你的 presenter; 烧毁时,你会停止你的 presenter 。每个 activity 或任何你的视图持有的任何器械都邑有一个 presenter。

所有的┞封些衡量,固然听起来很简单,当你实际操作一个用例时,有很多边沿案例要推敲。你有你的适配器,你的视图项目。确保每小我懂得的都一样,并且找到可以或许应用 MVP 的处所是最难的部分。然则如许做的最终结不雅是你可以获得更多的可单位测试代码。你可以获得更稳定的代码。

测试 - 机能

NimbleDroid

我有一堆关于测试的内容,但我不想让你们听三个小时测试的器械,所以我们跳过应用 JUnit 4 进行单位测试。你有一个 Gradle 构建体系,有 Espresso。这些都是标配。机能测试是个非标的对象。


  推荐阅读

  cnBeta推出三款新机器学习工具 帮助开发者打造AI应用

微软今天针对开辟者推出三款重要的新对象:Azure 机械进修实验办事、Azure 机械进修工作台以及 Azure 机械进修模型治理办事。此外,微软还针对那些想要借助 Visual Studio Code IDE、用 CNTK、TensorFlow、Theano、K>>>详细阅读


本文标题:安卓开发常用工具和第三方库汇总

地址:http://www.17bianji.com/lsqh/37607.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)