24H免费课程咨询  TEL:13401595960   QQ:1870218756  微信:13401595960(李老师)

东方博宜

网站首页 > 软件开发资讯 > 安卓开发

【常州安卓开发培训班】我们绝对是您正确的选择

2018-05-02 17:12:40 东方博宜 阅读

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 的库。MVP 的基本思想是把逻辑代码分离出来,这样视图部分,Core Android 的东西,会放在一起,然后 presenter 也是分开的,我们可以单元测试这个 presenter。理论上,我们可以改变视图,而不必完全重写业务逻辑。


有很多方法来做 MVP。我推荐的第一个库是 Mosby。即使你不使用 Mosby,他们也有很棒的教程和 Android 相关的文章(比如 MVP 应该是什么样的,它如何工作)。它主要能提供的功能是给你的 presenter 提供视图状态。


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


所有的这些权衡,虽然听起来很简单,当你实际操作一个用例时,有很多边缘案例要考虑。你有你的适配器,你的视图项目。确保每个人理解的都一样,并且找到能够运用 MVP 的地方是最难的部分。但是这样做的最终结果是你可以获得更多的可单元测试代码。你可以获得更稳定的代码。


测试 - 性能



NimbleDroid


我有一堆关于测试的内容,但我不想让你们听三个小时测试的东西,所以我们跳过使用 JUnit 4 进行单元测试。你有一个 Gradle 构建系统,有 Espresso。这些都是标配。性能测试是个非标的工具。


执行性能测试有两种主要的方法。 Google 倾向于主张使用 Systrace 类似的方法来查看丢帧率,他们有一个代码库,可以为你提供几乎能直接工作的代码(但不是很有效)。这允许你进行自动化性能测试,以查看丢帧率是否变化。


NimbleDroid 有一个免费的试用选项,你可以在其中上传 APK,它将自动测试冷启动,你也可以增加些应用程序中的关键流程。他们提供一个函数发生的时间序列图和详细信息。它可以免费进行试用(例如上传你的 APK 并获得冷启动时间,看是否有明显问题)。如果你想使用它来进行回归测试,那么它是很贵的,但它会帮助你意识到,有人做了一个改动,我们的启动时间变慢了,或者我们的关键流程慢了。如果性能是一个高优先级的目标,那么使用它是很有效的。

常州东方博宜是一家专注IT,互联网,电脑方面的顶尖培训机构,欢迎社会及院校有志互联网营销,搜索引擎营销的人士,来东方博宜报名学习,互相交流。

常州东方博宜地址:常州天宁区延陵西路2号工人文化宫5号楼

 2.新北区太湖东路9-4号常州创意园E12


Powered by 东方博宜教育咨询江苏有限公司  ©2008-2018 www.czos.cn