开发者社区> 问答> 正文

图片优化

图片优化

展开
收起
请回答1024 2020-04-10 12:48:04 814 0
1 条回答
写回答
取消 提交回答
  • (1)对图片本身进行操作。尽量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource来设置一张大图,因为这些方法在完成decode后,

    最终都是通过java层的createBitmap来完成的,需要消耗更多内存.

    (2)图片进行缩放的比例,SDK中建议其值是2的指数值,值越大会导致图片不清晰。

    (3)不用的图片记得调用图片的recycle()方法

    25、HybridApp WebView和JS交互

    Android与JS通过WebView互相调用方法,实际上是:

    Android去调用JS的代码

    1. 通过WebView的loadUrl(),使用该方法比较简洁,方便。但是效率比较低,获取返回值比较困难。

    2. 通过WebView的evaluateJavascript(),该方法效率高,但是4.4以上的版本才支持,4.4以下版本不支持。所以建议两者混合使用。

    JS去调用Android的代码

    1. 通过WebView的addJavascriptInterface()进行对象映射 ,该方法使用简单,仅将Android对象和JS对象映射即可,但是存在比较大的漏洞。

    漏洞产生原因是:当JS拿到Android这个对象后,就可以调用这个Android对象中所有的方法,包括系统类(java.lang.Runtime 类),从而进行任意代码执行。

    解决方式:

    (1)Google 在Android 4.2 版本中规定对被调用的函数以 @JavascriptInterface进行注解从而避免漏洞攻击。

    (2)在Android 4.2版本之前采用拦截prompt()进行漏洞修复。

    1. 通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url 。这种方式的优点:不存在方式1的漏洞;缺点:JS获取Android方法的返回值复杂。(ios主要用的是这个方式)

    (1)Android通过 WebViewClient 的回调方法shouldOverrideUrlLoading ()拦截 url

    (2)解析该 url 的协议

    (3)如果检测到是预先约定好的协议,就调用相应方法

    1. 通过 WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt() 消息

    这种方式的优点:不存在方式1的漏洞;缺点:JS获取Android方法的返回值复杂。

    2020-04-10 12:48:25
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载