[稀土掘金日报] 有效提升Android开发者工作效率

老实说,最近几年用Android Studio进行开发,其实也有一些陷阱和捷径需要讨论。
我是在经历了一些陷阱之后才慢慢弄清楚你提到的这些点的。

首先我们来说说Android Studio的静态检测功能。
刚搬到这里的时候,我还是习惯用Eclipse,每次提交代码之前都要手动检查一下。
结果,数百甚至数千条警报传来,而且每一条都很难更改。
后来我发现了 Insight Code,它是我的救星。
我记得有一次出现空指针异常。
以前需要很长时间才能找到它。
现在直接在代码中标记为红色。
单击它,将出现修复建议。
您可以用节省下来的时间做什么?
我们来谈谈MVP架构。
说实话,刚开始接触的时候我是很困惑的。
模型、视图和演示者都被明确区分。
这并没有减少代码量,而是增加了几个抽象级别。
后来在一个项目中,我把所有的业务逻辑都放在了presenter中,而activity/fragment只负责presentation。
感觉立刻就不一样了。
尤其是登录注册过程,以前Activity中需要很多if/else函数,现在Presenter中只需要几行代码就可以完成,并且后续维护不需要碰接口代码去改一个字段。
这种效率的提高是不小的进步。
但要小心,不要为了 MVP 而成为 MVP。
一些简单场景的硬划分变得不必要。

我遇到过一个关于Java和JS交互的典型场景。
当时我正在创建一个H5 页面的应用程序,需要在JS中调用本地摄像头。
一开始想用Intent来跳转,但是发现用户体验太差了。
后来研究了@JavascriptInterface注解,暴露了WebView中需要调用的方法。
问题立刻就解决了。
但需要注意的是,此类泄露方式最好添加权限控制,否则会产生安全风险。
有一个项目因此而出现了弱点,当时我真的很后悔。

我已经使用过动态充电技术。
我之前构建的一个电子商务应用程序需要 3 秒才能启动,用户已经不耐烦了。
后来我用DexSplitter来分割不常用的模块,启动速度立刻快了5 0%。
但该技术必须与ProGuard结合使用,否则可能会出现兼容性问题。
我记得测试机是小米6 ,某个模块没有加载。
花了一天时间才发现签名问题。

最后说一下团队经历。
微信团队的文章《提高Android开发效率的练习》我看了不下五遍。
其中描述的修补程序解决方案特别实用。
有个项目急需要热补丁,就按照他们的方法,只用了半天就上线了。
这种实践经验是光靠读书是无法获得的。

事实上,提高效率的关键不在于某项具体技术,而在于某个具体的技术。
找到适合您的组合。
例如,我有一个同事非常擅长使用RxJava来重构代码。
这样整个项目的异步处理效率提升了一倍。
这就是为什么您需要亲自尝试这些方法,看看它们是否适合您。

安装java后再安装javascript与java集成后能做什么

是的,就是这样。
安装Java并安装JavaScript工具后,他们就可以互相玩了。

要在 Java 中运行 JavaScript,请使用 ScriptEngine 类。
使用 eval() 简单直接。

或者,使用 fetch 或 axios 在 JavaScript 中调用 Java 方法。
后端 Spring 帮助您获得正确的接口。

前后端协同作战,直接进行数据通信,效率高。

JavaScript更擅长交互,而Java擅长处理复杂的事情。
两者的结合非常棒。

完整捆绑开发? SpringBoot 和 React/Vue 全部集成在一个包中,无需担心。

java 如何调用js方法

坦白讲,在Java中调用JavaScript方法其实很简单,但复杂之处在于如何选择合适的场景并正确执行。
我们先来说说最重要的事情。
如果你只是想在页面加载后直接执行JS代码,而不是JS主动调用Java,那么使用WebViewClient和evaluateJavascript。
我们去年做的一个项目,规模大约是3 000人,就使用了这种方法。
页面加载后直接执行JS,效率很高。

还有一点,如果需要Java和JS双向交互,比如JS调用Java,或者Java主动触发JS,就需要使用addJavascriptInterface。
这个方法很重要,因为它允许你创建一个Java对象,用@JavascriptInterface注解公开一个方法,然后通过JS中注册的接口名称调用Java方法。

一开始我觉得双向交互有点复杂,后来发现其实只要接口和绑定上下文设置正确就很容易实现。
等等,还有别的事。
很多人不关心安全。
避免暴露addJavascriptInterface中的敏感方法,避免恶意JS攻击。

最后,关于简单陷阱的警告,evaluateJavascript是异步的,结果通过ValueCallback回调返回,因此它非常适合执行简单的JS函数或获取返回值。
AddJavascriptInterface适合复杂的交互,但要注意安全性。
我认为这两种方法都值得尝试,根据您的需求进行选择,并始终将安全放在第一位。