- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当用我的 webView 加载一个 url 时,应用程序在几秒钟后崩溃(没有错误日志...)。
我的代码:
wv = new WebView(this);
wv.clearCache(true);
wv.clearHistory();
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wv.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType(mimetype);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO change for other domains
URL nextUrl;
try {
nextUrl = new URL(url.toString());
}catch (MalformedURLException e){
nextUrl = null;
}
if(nextUrl !=null && nextUrl.getHost().toString().equals(DOMAIN)) {
Toast.makeText(mContext, nextUrl.getHost().toString(), Toast.LENGTH_SHORT).show();
view.loadUrl(url);
return false;
}else{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
return true;
}
}
});
wv.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
MainActivity.this.setProgress(progress * 1000);
}
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d("MyProject: WebView: ", cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
});
wv.loadUrl(URL);
setContentView(wv);
日志:
01-20 18:00:50.798 7233-7288/ my.appli.com I/dalvikvm﹕ "WebViewCoreThread" prio=5 tid=12 NATIVE
01-20 18:00:50.798 7233-7288/ my.appli.com I/dalvikvm﹕ | group="main" sCount=0 dsCount=0 obj=0x419a0be0 self=0x68f6c750
01-20 18:00:50.798 7233-7288/ my.appli.com I/dalvikvm﹕ | sysTid=7288 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1773204176
01-20 18:00:50.799 7233-7288/ my.appli.com I/dalvikvm﹕ | state=R schedstat=( 0 0 0 ) utm=2326 stm=119 core=0
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #00 pc 000012a0 /system/lib/libcorkscrew.so (unwind_backtrace_thread+27)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #01 pc 0006235c /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+35)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #02 pc 000561bc /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+303)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #03 pc 00056256 /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+25)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #04 pc 000478c8 /system/lib/libdvm.so (dvmDebuggerSignalHandler(int, siginfo*, void*)+15)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:92)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:108)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.os.Looper.loop(Looper.java:137)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:900)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at java.lang.Thread.run(Thread.java:856)
01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ [ 01-20 18:00:50.841 7233: 7288 F/libc ]
Fatal signal 11 (SIGSEGV) at 0x0000001c (code=1), thread 7288 (WebViewCoreThre)
尝试使用我的 Android 设备 (4.1) 的默认浏览器加载相同的 URL 时,我遇到了同样的问题(崩溃)。
我要加载的 URL 是:
感谢您的帮助。
--- 编辑 1
我用最近的 Android 手机 (4.4) 试过,应用程序没有崩溃。
出于调试目的,我删除了我网站的所有重要部分(图像、js 等),但应用程序在向下滚动后仍然崩溃。
最佳答案
//编辑:找到了! general.css
中第 2540 行的罪魁祸首:
#head-search-form{display: block;margin: 30px 0;}
更具体地说,是 display: block
以某种方式使 WebView
阻塞。我不是网络开发人员,但是用 flex
或 none
交换值似乎不再导致崩溃(而且我无法分辨视觉差异在移动设备上)。希望对您有所帮助!
我已经建立了一个小型测试项目,并且能够在(虚拟)Android 4.1 设备上重现崩溃。它似乎只在页面完全加载后滚动时发生。 IE。您可以毫无问题地展开菜单抽屉,只要您不开始滚动...
我能够将罪魁祸首缩小到 general.css
.只要您不加载该样式表,页面就会正常工作和滚动,但当然看起来不会很漂亮。
由于 general.css
有 3300 多行,我建议您通过修复 the errors indicated by the W3C CSS Validator 来开始搜索真正的原因。 .如果这不能解决问题,请开始禁用与照片网格相关的样式规则,尤其是涉及动画/转换的任何内容。如果我有时间,我也可以自己尝试一下。
仅供引用,这里有一个更广泛的堆栈跟踪。其他人也可以在那里找到更多的指示。
mh.test.webview A/libc: Fatal signal 11 (SIGSEGV) at 0x00001f08 (code=1), thread 11949 (WebViewCoreThre)
I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG: Build fingerprint: 'generic/vbox86p/vbox86p:4.1.1/JRO03S/eng.buildbot.20151117.133415:userdebug/test-keys'
I/DEBUG: pid: 11930, tid: 11949, name: WebViewCoreThre >>> mh.test.webview <<<
I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00001f08
I/DEBUG: eax b84902e4 ebx 9ba8b488 ecx b804b028 edx b83c0224
I/DEBUG: esi b8490360 edi b804b028
I/DEBUG: xcs 00000073 xds 0000007b xes 0000007b xfs 00000000 xss 0000007b
I/DEBUG: eip 00001f08 ebp 997b9748 esp 997b96dc flags 00010296
I/DEBUG: #00 pc 00001f08 <unknown>
I/DEBUG: #01 pc 00344fd6 /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+38)
I/DEBUG: #02 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291)
I/DEBUG: #03 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291)
I/DEBUG: #04 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291)
I/DEBUG: #05 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291)
I/DEBUG: #06 pc 00346c55 /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType, WebCore::RenderLayer*)+213)
I/DEBUG: #07 pc 0020e727 /system/lib/libwebcore.so (WebCore::FrameView::layout(bool)+1159)
I/DEBUG: #08 pc 0068126f /system/lib/libwebcore.so (WebCore::Document::updateLayout()+127)
I/DEBUG: #09 pc 0068bbda /system/lib/libwebcore.so (WebCore::Document::updateLayoutIgnorePendingStylesheets()+90)
I/DEBUG: #10 pc 005ead53 /system/lib/libwebcore.so (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue(int, WebCore::EUpdateLayout) const+467)
I/DEBUG: #11 pc 005f35e9 /system/lib/libwebcore.so (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue(int) const+41)
I/DEBUG: #12 pc 005e68d7 /system/lib/libwebcore.so (WebCore::CSSComputedStyleDeclaration::getPropertyValue(int) const+55)
I/DEBUG: #13 pc 006297f8 /system/lib/libwebcore.so (WebCore::CSSStyleDeclaration::getPropertyValue(WTF::String const&)+88)
I/DEBUG: #14 pc 004d9475 /system/lib/libwebcore.so (WebCore::CSSStyleDeclarationInternal::getPropertyValueCallback(v8::Arguments const&)+181)
I/DEBUG: #15 pc 000efdd4 <unknown>
I/DEBUG: #16 pc 0005cf6b <unknown>
I/DEBUG: #17 pc 000bb32f <unknown>
I/DEBUG: #18 pc 00003b41 <unknown>
I/DEBUG: #19 pc 000f47ce <unknown>
I/DEBUG: #20 pc 0001a5a3 <unknown>
I/DEBUG: #21 pc 000065e3 <unknown>
I/DEBUG: #22 pc 00003b41 <unknown>
I/DEBUG: #23 pc 00024c59 <unknown>
I/DEBUG: #24 pc 00024dad <unknown>
I/DEBUG: #25 pc 00003b41 <unknown>
I/DEBUG: #26 pc 0001a59c <unknown>
I/DEBUG: #27 pc 000d7172 <unknown>
I/DEBUG: #28 pc 0001a5a3 <unknown>
I/DEBUG: #29 pc 000d40ed <unknown>
I/DEBUG: #30 pc 00017bf9 <unknown>
I/DEBUG: #31 pc 00008c2a <unknown>
I/DEBUG: 997b969c 00000000
I/DEBUG: 997b96a0 00000000
I/DEBUG: 997b96a4 00000000
I/DEBUG: 997b96a8 00000000
I/DEBUG: 997b96ac 00000000
I/DEBUG: 997b96b0 00000000
I/DEBUG: 997b96b4 00000000
I/DEBUG: 997b96b8 00000000
I/DEBUG: 997b96bc 00000000
I/DEBUG: 997b96c0 00000000
I/DEBUG: 997b96c4 00000000
I/DEBUG: 997b96c8 00000000
I/DEBUG: 997b96cc 00000000
I/DEBUG: 997b96d0 00000000
I/DEBUG: 997b96d4 00000000
I/DEBUG: 997b96d8 00000000
I/DEBUG: #00 997b96dc 9ad1cdd4 /system/lib/libwebcore.so (WebCore::RenderLayer::updateLayerPosition()+52)
I/DEBUG: 997b96e0 b84902e4 [heap]
I/DEBUG: 997b96e4 b8490090 [heap]
I/DEBUG: 997b96e8 0000000f
I/DEBUG: 997b96ec 0000002f
I/DEBUG: 997b96f0 b8490090 [heap]
I/DEBUG: 997b96f4 00000001
I/DEBUG: 997b96f8 9ad2204e /system/lib/libwebcore.so (WebCore::RenderLayer::repaintIncludingNonCompositingDescendants(WebCore::RenderBoxModelObject*)+14)
I/DEBUG: 997b96fc b827f428 [heap]
I/DEBUG: 997b9700 9ba8b488 /system/lib/libwebcore.so
I/DEBUG: 997b9704 b8490090 [heap]
I/DEBUG: 997b9708 997b9748 [stack:11949]
I/DEBUG: 997b970c 9ad35d38 /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::updateBacking(WebCore::RenderLayer*, WebCore::RenderLayerCompositor::CompositingChangeRepaint)+344)
I/DEBUG: 997b9710 b8490014 [heap]
I/DEBUG: 997b9714 b848fe3c [heap]
I/DEBUG: 997b9718 00000012
I/DEBUG: ........ ........
I/DEBUG: #01 997b9750 b8490360 [heap]
I/DEBUG: 997b9754 b8490090 [heap]
I/DEBUG: 997b9758 00000000
I/DEBUG: 997b975c 997b98e0 [stack:11949]
I/DEBUG: 997b9760 997ba84f [stack:11949]
I/DEBUG: 997b9764 b843a9e4 [heap]
I/DEBUG: 997b9768 00000034
I/DEBUG: 997b976c 00000180
I/DEBUG: 997b9770 b848fe3c [heap]
I/DEBUG: 997b9774 b85257f8 [heap]
I/DEBUG: 997b9778 9ace0300 /system/lib/libwebcore.so (WebCore::RenderBox::dirtyLineBoxes(bool)+80)
I/DEBUG: 997b977c 43400000
I/DEBUG: 997b9780 b83fe51c [heap]
I/DEBUG: 997b9784 997b9788 [stack:11949]
I/DEBUG: 997b9788 004a0000
I/DEBUG: 997b978c b848feb8 [heap]
I/DEBUG: ........ ........
I/DEBUG: #02 997b9aa0 b804b028 [heap]
I/DEBUG: 997b9aa4 b8490360 [heap]
I/DEBUG: 997b9aa8 00000000
I/DEBUG: 997b9aac 997b9c30 [stack:11949]
I/DEBUG: 997b9ab0 997ba84f [stack:11949]
I/DEBUG: 997b9ab4 b83fe51c [heap]
I/DEBUG: 997b9ab8 00000000
I/DEBUG: 997b9abc 00000001
I/DEBUG: 997b9ac0 b86fd038 [heap]
I/DEBUG: 997b9ac4 b86fd368 [heap]
I/DEBUG: 997b9ac8 997b9b48 [stack:11949]
I/DEBUG: 997b9acc 9adac54a /system/lib/libwebcore.so (WebCore::TransformState::move(int, int, WebCore::TransformState::TransformAccumulation)+58)
I/DEBUG: 997b9ad0 b83fe678 [heap]
I/DEBUG: 997b9ad4 b8294d4c [heap]
I/DEBUG: 997b9ad8 00580b05
I/DEBUG: 997b9adc b83fe770 [heap]
I/DEBUG: ........ ........
I/DEBUG: (no map below)
I/DEBUG: (no map for address)
I/DEBUG: 20c1e000-20c1f000
关于javascript - 安卓 WebView : crash after url loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34895838/
Webview shouldInterceptRequest方法总是返回null。我去了adblocking的use方法。我尝试了很多adblock方法,但是总是需要这个shouldIntercept
在我的 Native React 项目中,我想使用 WebView。 HTML是指外部的css文件,css文件是指一些自定义字体。 鉴于此层次结构: app/ app/index.ios.js app
我在一个页面上有多个 webview,当应用程序加载时,主页面卡住了将近 8-10 秒,我猜测这是所有 webview 加载各自网站所花费的时间,为什么 Ui 卡住了,我怎么能使 webview 加载
nativescript 中的 webview 是否有“导航”事件? 我已经在 Xamarin (c#) 中用 完成了 Browser.Navigating += Myfunction natives
我的浏览器 (webview) 以 HTML 页面开头 FILEJAVA.class.getResource ("FILEHTML.html")。 ToExternalForm () 每当我访问谷歌时
我们正在开发一个 JavaFX 2.x 应用程序,它需要提供一些 GIS 支持。我们得出的结论是,通过嵌入式 WebView 使用 GoogleMaps 是最快的选择。它的问题在于每次我们的应用程序启
有没有办法销毁 WebView 实例?如果页面加载,并说视频开始播放,我希望能够,当我隐藏 WebView 时,基本上可以销毁它,或者至少重置它。 我知道我可以听 visibleProperty 并执
有没有办法在不启用远程模块的情况下在 webview 和主窗口之间进行通信? When this attribute is false the guest page in webview will
我使用以下代码来拦截Web View 中的对话框,但看不到内容或无法与之交互: Element webview= querySelector("#webview"); Map map=new
我正在创建一个页面,该页面将在 Java 的 WebView 中打开,或在外部浏览器中手动打开。如果页面是从 Java 加载的——我需要它来执行特定的回调,因为 Java 被用作一种后端,但如果页面是
我有一个 React Native WebView ,它运行一个小的 HTML 文档。该文档显示了一些图像。 我希望显示位于应用程序的 Documents 文件夹中的图像,即图像不是静态 Assets
我正在使用 JavaFX webview 开发一个网络爬虫。出于抓取目的,我不需要加载图像。当页面被加载时,Webkit 会产生很多 UrlLoader 线程。所以我认为最好禁用图像,这样我会节省很多
这个问题在这里已经有了答案: Android webview launches browser when calling loadurl (11 个答案) 关闭 7 年前。 我花了两天的时间来寻找一
我正在加载一个网页,我想使用基本身份验证登录,我有使用 Swift 的经验并且能够像下面那样执行基本身份验证,但我无法为我的应用程序的 Flutter 版本实现基本身份验证。 ---- swift 代
我用 webview 创建了应用程序,我想在 webview 中加载所有内部链接并在 android 浏览器中加载外部链接。现在的问题是我正在使用 html 广告,当我点击广告时我想打开外部浏览器,但
我需要在父背景图案上显示我的 webview 内容。有没有直接的方法来做到这一点? 最佳答案 这可能有用 final com.sun.webkit.WebPage webPage = com.sun.
是否可以从 webview 中加载的页面读取 http 请求和响应数据。我想要做的是在用户单击 webview 中页面内的链接后从响应中获取二进制数据。任何帮助或线索将不胜感激 最佳答案 创建您自己的
我有一个简单的WebView在 Android 上运行 Web 应用程序。问题是当我旋转手机以将其更改为横向 webview重新加载并回到开头。 我怎样才能防止这种行为? 罗恩 最佳答案 从 Andr
我创建了一个带有 webview 标签的自定义浏览器。当我在 google.it(或 google.com)中导航时,有时会出现一条消息说 chrome 已过时。我的应用版本是: Node.js 8.
我正在使用 Electron 创建简单的网络浏览器。我的用例是我需要通过不同/各自的代理 IP 路由每个 URL。如果用户输入 google.com,则必须通过 123.123.122.1:8081
我是一名优秀的程序员,十分优秀!