首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

那些年在WebView上踩过的坑

之前我在Android中使用WebView与JS交互全解析一文中,介绍了通过Webview和JS的交互方式,但Webview这个控件简直是让人又爱又恨,各种你想不到的错误在各种奇怪的手机上,各种不一样的版本里...问题描述: 当你的程序调用了WebView加载网页,WebView会自己开启一些线程,如果你没有正确地将WebView销毁的话,这些残余的线程会一直在后台运行,由此导致你的应用程序耗电量居高不下。...6.后台无法释放js 导致耗电 问题描述: 在有的手机里,你如果webview加载的html里 有一些js 一直在执行比如动画之类的东西,如果此刻webview 挂在了后台,这些资源是不会被释放 用户也无法感知...: rootLayout.removeView(webView); webView.destroy(); 14.处理WebView中的非超链接请求(如Ajax请求) 有时候需要加上请求头,但是非超链接的请求...,没有办法再shouldOverrinding中拦截并用webView.loadUrl(String url,HashMap headers)方法添加请求头 目前用了一个临时的办法解决: 首先需要在

2.2K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基于腾讯x5开源库,提高60%开发效率

    不要通过网页传输敏感信息,有的网站为了引导已经登录的用户到APP上使用,会使用脚本动态的生成URL Scheme的参数,其中包括了用户名、密码或者登录态token等敏感信息,让用户打开APP直接就登录了...恶意应用也可以注册相同的URL Sechme来截取这些敏感信息。Android系统会让用户选择使用哪个应用打开链接,但是如果用户不注意,就会使用恶意应用打开,导致敏感信息泄露或者其他风险。...* 比较正确的做法是让用户选择是否信任这个网站,这时候可以弹出信任选择框供用户选择(大部分正规浏览器是这么做的)。...* 有时候,针对自己的网站,可以让一些特定的网站,不管其证书是否存在问题,都让用户信任它。 * 坑:有时候部分手机打开页面报错,绝招:让自己网站的所有二级域都是可信任的。...上面4.0.5 使用scheme协议打开链接风险已经说明了scheme使用的危险性,那么如何避免这个问题了,设置运行访问的白名单。或者当用户打开外部链接前给用户强烈而明显的提示。

    3.6K30

    Hybrid App 应用开发中 9 个必备知识点复习

    解决办法: 无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过 canvas getImageData()方法取得图片数据后返回 base64 格式的数据,客户端在需要截图的时候...目前 Crosswalk 正式支持的移动操作系统包括 Android 和 Tizen ,在 Android 4.0 及以上的系统中使用 Crosswalk 的 Web 应用程序在 HTML5 方面可以有一致的体验...这种方法可以比较有效的减少 WebView 在App中的首次打开时间。当用户访问页面时,不需要初始化 WebView 的时间。 当然这也带来了一些问题,包括: 额外的内存消耗。...如果你需要在 WebView 中打开链接或者你打开的页面带有 flash,获得你的 WebView 想弹出一个 dialog ,都会导致从 ApplicationContext 到 ActivityContext...更强大的 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序中的 WebView 配置为可调试模式。

    2.7K20

    Hybrid App 应用开发中 9 个必备知识点复习

    解决办法: 无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过 canvas getImageData()方法取得图片数据后返回 base64 格式的数据,客户端在需要截图的时候,调用这个...目前 Crosswalk 正式支持的移动操作系统包括 Android 和 Tizen ,在 Android 4.0 及以上的系统中使用 Crosswalk 的 Web 应用程序在 HTML5 方面可以有一致的体验...这种方法可以比较有效的减少 WebView 在App中的首次打开时间。当用户访问页面时,不需要初始化 WebView 的时间。 当然这也带来了一些问题,包括: 额外的内存消耗。...如果你需要在 WebView 中打开链接或者你打开的页面带有 flash,获得你的 WebView 想弹出一个 dialog ,都会导致从 ApplicationContext 到 ActivityContext...更强大的 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序中的 WebView 配置为可调试模式。

    2.3K30

    【Hybrid】288- Hybrid App 应用开发中 9 个必备知识点复习

    解决办法: 无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过 canvas getImageData()方法取得图片数据后返回 base64 格式的数据,客户端在需要截图的时候,调用这个...目前 Crosswalk 正式支持的移动操作系统包括 Android 和 Tizen ,在 Android 4.0 及以上的系统中使用 Crosswalk 的 Web 应用程序在 HTML5 方面可以有一致的体验...这种方法可以比较有效的减少 WebView 在App中的首次打开时间。当用户访问页面时,不需要初始化 WebView 的时间。 当然这也带来了一些问题,包括: 额外的内存消耗。...如果你需要在 WebView 中打开链接或者你打开的页面带有 flash,获得你的 WebView 想弹出一个 dialog ,都会导致从 ApplicationContext 到 ActivityContext...更强大的 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序中的 WebView 配置为可调试模式。

    2.3K20

    Hybrid App 应用 开发中 9 个必备知识点复习(WebView 调试 等)

    解决办法: 无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过 canvas getImageData()方法取得图片数据后返回 base64 格式的数据,客户端在需要截图的时候...目前 Crosswalk 正式支持的移动操作系统包括 Android 和 Tizen ,在 Android 4.0 及以上的系统中使用 Crosswalk 的 Web 应用程序在 HTML5 方面可以有一致的体验...这种方法可以比较有效的减少 WebView 在App中的首次打开时间。当用户访问页面时,不需要初始化 WebView 的时间。 当然这也带来了一些问题,包括: 额外的内存消耗。...如果你需要在 WebView 中打开链接或者你打开的页面带有 flash,获得你的 WebView 想弹出一个 dialog ,都会导致从 ApplicationContext 到 ActivityContext...更强大的 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序中的 WebView 配置为可调试模式。

    3.2K00

    Android四大组件安全问题

    等 Android SDK 文档中明确说明了存在安全问题的 API Service AndroidMainfest 配置 android:exported="false", 其它应用不可以调用 通过...数据库时, 如果实现不当, 而 Provider 又是暴露的话, 则可能会引发本地 SQL 注入漏洞 防止目录遍历漏洞, 去除 Content Provider 中没有必要的 openFile() 接口...使用此 protectionLevel 来标识用户可能关注的一些权限。...Android 将会在安装程序时, 警示用户关于这些权限的需求 signature 签名权限, 当应用程序所用签名与声明引权限的应用程序所用签名相同时, 才能将权限授给它 signatureOrSystem...除了具有相同签名的 APP 可以访问外, Android 系统中的程序也有权限访问 参考链接:Android安全开发之Provider组件安全 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻

    93410

    为什么那么多公司钟爱 Flutter ?

    背景与问题 中小公司维护一个 App 的成本好高呀,有没有办法可以降低成本的可能性,但是又不想让代码缺少维护? 有没有方案可以实现一份代码可以运行在多个平台,减少沟通成本呢? 2....WebView 主要是通过 HTML 来构建自己的界面,再将其显示在各个平台的 WebView中,但是它默认是不能调用本地的一些服务的【比如蓝牙、相机等】所以需要调用JavaScript 进行桥接调用...但是根据本人亲自对WebView 的使用,WebView 的性能并不够理想,而且开发过程中的坑也比较多。 下图是 WebView 的原理图 -- 认真看下 ?...▐ 3.3 方法三 Flutter Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。Flutter 可以与现有的代码一起工作。...120帧的电影,目的就是让图片间隔更小,画面更加的流畅) 2、帧率与刷新率的关系 ?

    1.9K20

    WebView性能、体验分析与优化

    在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。...WebView初始化慢,就随时初始化好一个WebView待用。 DNS和链接慢,想办法复用客户端使用的域名和链接。 脚本执行慢,可以把框架代码拆分出来,在请求页面之前就执行好。...点击延迟 在WebView中,click通常会有大约300ms的延迟(同时包括链接的点击,表单的提交,控件的交互等任何用户点击行为)。...App使用Socket代理请求 如果HTTP请求容易被拦截,那么让App将其转换为一个Socket请求,并代理WebView的访问也是一个办法。...解决方法:在内嵌的WebView中应该限制允许打开的WebView的域名,并设置运行访问的白名单。或者当用户打开外部链接前给用户强烈而明显的提示。

    5.1K141

    腾讯TMQ在线沙龙|老司机教你玩转Appium自动化测试

    ,请问你们有没有遇到类似情况。...问题3:appium是基于UiAutomator实现的,就我所知是没有方法获取控件的颜色,其实我们测试过程中也没关注UI上的颜色,更多关注逻辑上是否OK的。...答:公共的业务逻辑需要大家对自己的义务和自动化目标非常熟悉,能知道需要实现哪些用例,这些用例中是否有可重复使用的过程,提取出来就是了。就如我举例时说到的取消用户引导页过程。...另外我们的所有自动化测试都是使用真机测试的,毕竟模拟器并不是用户真实的使用环境,即使在模拟器上全通过了可能也不能确保在用户真机环境中是OK的。 15、问题: 1....或者在包中埋个彩蛋,让程序做某个操作后或者在某个路径放一个特殊内容的文件后就连到测试环境,这样应该可以解决一些问题。

    1.4K70

    iOS 解决微信h5支付无法直接返回APP的问题

    但是真正做的时候问题来了,当你支付成功之后或者是取消支付的时候会跳转到Safari浏览器,这就很尴尬了,完全无用户体验啊。当时看着Android可以直接返回到APP,心里瞬间不爽了。...下面开始我的坎坷之路了: 首先你在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 然后你通过统一下单后台会从微信拿到这么个链接...那么,怎么办呢,最后我们经过协商,只要能支付,不管支付成功或者取消支付,只要停留在微信界面就可以了,然后让用户点击右上角手动返回APP,这个是没有办法的办法了。...,这个链接是通过拦截webView访问获取的,然后我试了一下,可以支付,也停留在了微信,于是我高高兴兴的去尝试了一下 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest...,然后进行支付,发现还是一样的会跳转到Safari浏览器,当时瞬间懵逼了,怎么会这个样子呢,不信邪的我又让Android那个哥们拦截一个链接给我,尝试一下不会跳转浏览器,我又试了一下自己的拦截的链接还是会跳转到

    2.3K10

    前端实现多语言切换_等红灯时频繁D到N档切换

    您可以在已安装的系统应用列表中看到它: Android 7.0之后: Chrome应用将用于呈现WebView第三方Android应用中的任何/所有内容。...在具有Android N开箱即用的手机中,Android WebView系统应用根本不存在。...在已收到Android N的OTA更新的设备中,Android系统WebView被禁用: 此外,引入了多语言支持,设备具有多种默认语言: 如果应用中包含WebView,那么使用Chrome应用呈现这些内容...因为Chrome 本身就是一个Android应用程序,运行在自己的沙盒过程中,所以它不会被绑定到您的应用程序设置的区域设置。相反,Chrome将恢复到主设备区域设置。...步骤2: new WebView(this).destroy(); 将这行代码添加到Applicaiton的oncreate下,以及用户可能正在改变语言的地方。

    51730

    安卓开发开发规范手册V1.0

    1.4 合理设置sharedUserId权限 通过sharedUserId,可以让拥有同一个User Id的多个apk运行在同一个进程中,互相访问任意资源。...不要通过网页传输敏感信息,有的网站为了引导已经登录的用户到APP上使用,会使用脚本动态的生成URL Scheme的参数,其中包括了用户名、密码或者登录态token等敏感信息,让用户打开APP直接就登录了...恶意应用也可以注册相同的URL Sechme来截取这些敏感信息。Android系统会让用户选择使用哪个应用打开链接,但是如果用户不注意,就会使用恶意应用打开,导致敏感信息泄露或者其他风险。...3.3 WebView File域同源策略绕过 应用程序一旦使用WebView并支持File域,就会受到该漏洞的攻击。...,如执行流程、明文的用户名密码等,这会让攻击者更加容易的了解APP内部结构方便破解和攻击,甚至直接获取到有价值的敏感信息。

    1.7K00

    修复android下webView控件的总结

    游戏中有一个收集玩家问题反馈的网页,很早之前就有同事反映说android在游戏无法上传附件,在浏览器中是可以正常使用的。...bug,最后我是在一篇文章中猛然发现可能我目前使用的代码写的有问题(离职人员留下的),这篇文章链接在这里: android开发中WebView的使用(附完整程序) ?...:Android WebView上传文件 ?...在页面B中,用户点击一个A元素的超链接(href=”javascript:history.go(-1);”)它能正常返回,但是在点击提交问题按钮之后,ajax接口成功后用js调用history.go(-...但又要写一些代码,所以又想先再找找有没有其它办法… 之后我仔细查看了http的上传请求,尝试在ajax.ajaxFileUpload的success方法中延时调用history.go(-1),发现界面错位了

    1.6K20

    Android Deep Link 攻击面

    概念Android Deep Link(深层链接) 是一种特殊的链接协议,主要用于在应用程序之间导航和交互,使用 Deep Link 可以从一个APP跳转到另一个APP中相应的页面,实现APP间的无缝跳转...图片不过需要注意的是,上面的 ***没安装则跳转到下载应用页\*** 是 Deferred deeplink(延迟深度链接),他和基础的deeplink相比,如果用户没有下载APP,则引导用户下载安装该...Deferred Deep Link 可以提高用户的体验和应用程序的转化率,因为它可以让用户直接跳转到指定的页面或功能,而无需手动查找。1.1.2....**分享闭环:** 在应用内分享一个商品链接,用户点击链接可以直接跳转到商品详情页面。**无码邀请:** 在应用内点击邀请好友的按钮,可以生成一个唯一的邀请链接,并在邀请过程中跳转到应用内的注册页面。...分析如图:如果路由是/web,则会进入else中从参数url中取值给data通过webview加载data图片所以利用调用的命令如下:adb shell am start -W -a android.intent.action.VIEW

    1.7K100

    搞不定移动端性能,全球爆火的 Notion 从 Hybrid 转向了 Native

    该团队声称该应用程序现在在 iOS 上的启动速度提高了 2 倍,在 Android 上的启动速度提高了 3 倍。...Notion 发布的这条 Twitter 也得到了广泛的关注,几天之内就有了上千条转发。...如果我们已经有了 webview,那么 React Native 不会增加价值。对我们来说,它让一切变得更加困难:性能、代码复杂性、招聘等等。...虽然无论是原生开发还是 Hybrid 都可以完成工作,但原生应用程序是按照操作系统技术和用户体验准则开发的,因此具有更快的性能优势,并能轻松访问和利用用户设备的内置功能(例如,GPS、地址簿、相机等)。...如果有足够时间,那么原生方法最有意义,可以让应用程序具有最佳性能、最高安全性和最佳用户体验。毕竟,用户体验是应用程序成功的关键。

    2.3K20

    《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的Https包-上篇

    ~ 在抓包测试中,相信很多人都遇到过 Android 高版本(Android7.0 以上)系统无法抓包的问题。... 同时在上面的链接中,Google也给出了办法,怎么在Android7.0...及以后的系统中,让APP信任我们手工导入的CA证书。...但是,因为测试的是企业微信小程序,想让企业微信的开发人员帮我这么干,简直是白日做梦,更不用说安全等问题… 6.webview抓包失败 上面可以解决android原生抓包问题,但在android7.0以上的手机...,开着网络代理访问不了webview,若要抓包webview,需要在webview的WebViewClient中,将一行代码给注释掉: super.onReceivedSslError(view, handler

    4.3K30

    Rust 移动开发与跨平台模式探究

    任何想要接触大多数移动用户的人都会发现自己必须开发两个版本的应用程序。...这两个平台存在显着差异:在语言级别上,iOS 应用程序主要是用 Swift(历史上是 ObjC)编写的;另一方面,Android 应用程序主要是用 Java 编写的,如今 Kotlin 越来越受欢迎。...分层架构:遵循“关注点分离”原则来进行上下分层,将属于业务逻辑的关注点放到领域层(Domain Layer)中,而将支撑业务逻辑的技术实现放到基础设施层(Infrastructure Layer)中。...目前支持 Windows/ MacOS/ Linux 等平台,对于 iOS / Android 移动平台的支持正在进行中。 “1Password 8 使用 Electron 开发,引起很多用户的不满。...默认支持动态链接。Rust 生态是默认静态链接,但是对于 Android 来说,这种方式存在一定问题。因此,默认情况下,Soong 选择为设备目标动态链接 crate。

    3.6K50
    领券