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

东方博宜

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

【常州安卓开发培训班】秉明烛师心治为人之学

2018-05-02 17:15:58 东方博宜 阅读

推送通知


作为开发人员,第一反应是使用 GCM 或现在的 Firebase Cloud Messaging,这些库正在重组。但是这些工具对营销人员不友好。最简单的情况是,如果你已经有了很好的分析服务,Firebase 和 Mixpanel(以及其他许多库)都可以用来发送通知。你可以根据你的 activity 发送消息。可以这样设计,一个从来没有发生过购买的人,做了三次搜索,这时你可以给他们发送一个通知,建议他们买些东西。这是最简单的情况。


有时你会想要一些更深入的东西。Urban Airship 的推送通知特别专业,这是他们的主要方向。他们发现,“人们只会看到通知的前 60 个字符”,我们都会收到这样的通知,你只能看到前面几个字。就像,“你不会相信这个…”,它被截断了。然后你点击它,你被带到一个随机的屏幕里,你甚至不知道推送通知的内容是什么。Urban Airship 很好,他们帮助你思考这样的事情,给你更多的细微差别提示,思考如何能更好地推出通知服务。


Kahuna 很受欢迎,有很多人都在使用它,但我会强烈反对。他们的想法很棒。通过借助 AI 来帮你确定哪种推送方式更合适,是发送电子邮件,还是发送短信或者是推送通知。AI 计算出最好的推送时间,并建议通知上需不需要添加花朵。这部分他们还没有实现。但他们现在会做些文字上的变化。他们试图让通知受人喜爱,尽可能地推送最合适的通知,想法很酷,希望它能很快实现。但是现在,现实实现中,他们遇到了很多问题,用户的通知被发送给错误的用户。用户被合并在一起,视为一组。所以使用时请小心。有些人用的很好。但我被坑了。


更轻松


有很多伟大的工具能使你的开发更容易些。


一个工具是 Butter Knife(@indVView)。它使你的代码更漂亮。你可以使用 @BindView 通过 ID 查找视图,而不必遍历所有的视图。Zelezny,是一个Android Studio 插件。把它放进 Layout 中,它会自动生成 BindViews 和 OnClicks。如果你以前一直是手敲代码,它会节省点时间。最大的限制是 annotation 的处理会破坏增量编译。如果你有 Butter Knife,那么你可能会比没有 Butter Knife 时的增量编译慢些。对我个人而言,我喜欢所有的 annotation 处理工具,船已航行。我已经接受了 annotation 处理器打破我的增量编译的现实。我听说有人建议将它们全部放在同一个模块中可以解决这个问题。这是唯一的缺点,许多 annotation 处理都会有这个问题。也许有一天这个问题会被修复。 JRebel 声称一些特定版本的增量编译已经修复了。除此之外,Butter Knife 是最好的选择。


Hugo 是个 Jake Wharton 的库(* 当我说 Jake Wharton,一半的时候是指 Square,它们是同一个意思*)。它是一个轻量级的库,你可以在方法之上执行 @Debug.Log,然后打印出该方法花费的时间,以及参数。它特别适用于现场性能记录。 “我需要缓存这个变量吗?它被调用太多了以至于变慢了吗?”你可以看到,“不,这只花了 10 毫秒,我应该把它放在一个后台线程上,或者花了不到一毫秒,我们不用担心这个”。它很容易纳入你的代码,并迅速获得相关数字。


Dart & Henson,你有 intents ;不需要使用键值映射,它给你应该有的值。它做了点 annotation 的映射来展示 intents 的值是什么。我更喜欢的另外一种理解方法是你正在调用的 activity 的静态 intents 。这样,你可以传入你想要的参数,这样就解决了神秘的键值对的问题。它使得代码更加紧密,这样可以防止错误。


如果你喜欢 lambdas,你应该使用 Retrolambda。需要注意是它产生四种方法,而不是正常的匿名类。我认为使用 Retrolambda 会使得代码不易读,这是你必须做出明智决定的地方。


更困难(初期)


我们来谈一谈哪些库会让开发变得更加困难,或者说开始的时候更困难。但总的来说,这些都是好工具。


RxJava


RxJava,对于那些没有听说过的人来说,这个库的想法是,过去的代码从 A 点开始,到 B 点结束。但在 Android 世界中,移动开发世界中,这一切就都不一样了。 *你从 A 点开始。然后人们点击某些东西,所以你必须做些别的事情来响应。然后一个通知进来,你必须又做些事情。然后数据库请求出现了。Reactive 努力使你的代码能够对你的应用程序中的发生的事情做出反应,帮助你更好的组织它们,而且方便移动。


起初很难,因为它有一个学习曲线。如果你正在看代码,特别是对于没有接触过 RxJava 的人来说,会有许多不清楚的地方。最简单的就是网络。但是,如果你有几个标准的例子,你使用这些案例,并确保是最佳的做法,情况就会不一样了。当你开始拥有这些功能时,它们非常强大,你可以将其运用于应用程序中的任何地方,但是当你这样做的时候,每当雇用新的开发人员,你将不得不教会他们每个 activity 是怎么工作的,这需要很小心。


此外,它很容易用错。即使是关于 RxJava 的许多会议都会漏掉一些最佳做法。例如,如果你不取消订阅网络呼叫,那么你会被回调,这时可能会发生崩溃,因为屏幕已经不存在了。谨慎地使用它,总体上来说它还是很好的。


Kotlin


当我说小心使用非内建语言或者说新语言不寻常的地方时,我想说的就是那些你能看到的不寻常的地方。 Kotlin 生成了更整洁的代码。这有好处。使你的代码更容易阅读,也会使没有意义的东西少一些,这是你需要的核心东西。它也隐藏了指针的概念。


最大的缺点是它会随机地破坏事情,如果有什么事情发生,你都会怀疑 Kotlin。这可能是 Kotlin 的错,可能不是,但是都会花掉开发人员的许多时间,来弄清楚到底是不是 Kotlin 的错。你需要更新 Gradle 的构建,然而这依旧不奏效。这可能是 Kotlin 的错,也可能不是 Kotlin 的错,但是你都不得不重新检查 Kotlin。


同样的情况是,你的 Android Studio 也会随机崩溃,或者 ProGuard 不工作了,因为它去掉了一些 Kotlin 的类。这些事情经常发生,很难扭转。Kotlin 有很多权衡点。我们在代码中使用它。确实有一些问题,与此同时,了解 Kotlin 的人们的代码审查更快。对于不知道 Kotlin 的人来说,有一个学习的曲线。这是一个权衡。你必须自己决定。

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

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

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


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