android webview framework,android – Webview导致ANR

我编写了一个应用程序,它在Webview中显示html页面,这些页面在ViewPager中管理.一切正常,但是从一页翻到另一页时我有几个ANR. ANR数据转储显示主线程已通过ThreadedRenderer.nSyncAndDrawFrame()调用它调用本机方法,该方法显然与Renderer线程通信,并等待该线程完成绘制视图.由于这两个都在执行本机代码,因此很难弄清楚正在发生什么,但似乎Renderer线程从未表示主线程要恢复,因此导致ANR.在ANR报告之前,logcat中没有任何内容表明存在任何问题.

有没有人有关于如何排除故障的建议?我假设对ThreadedRenderer.nSyncAndDrawFrame()的调用与Webview相关联,但我实际上没有任何东西可以确认.

问题是不可重复的,因为如果我重新启动应用程序并导航到ANR发生时显示的同一页面,则不会再次发生. Device是运行Android 5.1的Nexus 7.

主渲染器线程和渲染器线程的ANR堆栈跟踪:

"main" prio=5 tid=1 Native

| group="main" sCount=1 dsCount=0 obj=0x73547000 self=0xb4827800

| sysTid=1248 nice=-6 cgrp=default sched=0/0 handle=0xb6fd6bec

| state=S schedstat=( 0 0 0 ) utm=6035 stm=1406 core=0 HZ=100

| stack=0xbe5a6000-0xbe5a8000 stackSize=8MB

| held mutexes=

kernel: (couldn't read /proc/self/task/1248/stack)

native: #00 pc 000133b8 /system/lib/libc.so (syscall+28)

native: #01 pc 00016a81 /system/lib/libc.so (__pthread_cond_timedwait_relative(pthread_cond_t*, pthread_mutex_t*, timespec const*)+56)

native: #02 pc 0003c73b /system/lib/libhwui.so (???)

native: #03 pc 0003c771 /system/lib/libhwui.so (???)

native: #04 pc 0083fd83 /data/dalvik-cache/arm/system@framework@boot.oat (Java_android_view_ThreadedRenderer_nSyncAndDrawFrame__JJJF+134)

at android.view.ThreadedRenderer.nSyncAndDrawFrame(Native method)

at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:340)

at android.view.ViewRootImpl.draw(ViewRootImpl.java:2530)

at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2352)

at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1982)

at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)

at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)

at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)

at android.view.Choreographer.doCallbacks(Choreographer.java:580)

at android.view.Choreographer.doFrame(Choreographer.java:550)

at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:135)

at android.app.ActivityThread.main(ActivityThread.java:5254)

at java.lang.reflect.Method.invoke!(Native method)

at java.lang.reflect.Method.invoke(Method.java:372)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

"RenderThread" prio=5 tid=26 Native

| group="main" sCount=1 dsCount=0 obj=0x12c07820 self=0xa1c30800

| sysTid=1303 nice=-4 cgrp=default sched=0/0 handle=0xa1c44c00

| state=S schedstat=( 0 0 0 ) utm=8314 stm=1817 core=0 HZ=100

| stack=0xa0cc2000-0xa0cc4000 stackSize=1012KB

| held mutexes=

kernel: (couldn't read /proc/self/task/1303/stack)

native: #00 pc 000133b8 /system/lib/libc.so (syscall+28)

native: #01 pc 0001741b /system/lib/libc.so (__futex_wait_ex+42)

native: #02 pc 00017761 /system/lib/libc.so (pthread_mutex_lock+230)

native: #03 pc 0001d767 /system/vendor/lib/libgsl.so (os_mutex_lock+6)

native: #04 pc 0001ea88 /system/vendor/lib/egl/libEGL_adreno.so (egliDoDestroyEGLImage+180)

native: #05 pc 0008698d /system/vendor/lib/egl/libGLESv2_adreno.so (rb_image_try_release+32)

native: #06 pc 00086acf /system/vendor/lib/egl/libGLESv2_adreno.so (rb_destroy_resource_updates_pure+136)

native: #07 pc 00085491 /system/vendor/lib/egl/libGLESv2_adreno.so (rb_perform_resolve+276)

native: #08 pc 00085761 /system/vendor/lib/egl/libGLESv2_adreno.so (rb_resolve+464)

native: #09 pc 0008a891 /system/vendor/lib/egl/libGLESv2_adreno.so (rb_surface_swap+228)

native: #10 pc 0006af89 /system/vendor/lib/egl/libGLESv2_adreno.so (gl2_surface_swap+76)

native: #11 pc 0005d12b /system/vendor/lib/egl/libGLESv2_adreno.so (oglSwapBuffer+194)

native: #12 pc 00013ddc /system/vendor/lib/egl/libEGL_adreno.so (qeglDrvAPI_eglSwapBuffers+1776)

native: #13 pc 00007b60 /system/vendor/lib/egl/libEGL_adreno.so (eglSwapBuffers+16)

native: #14 pc 0001237f /system/lib/libEGL.so (eglSwapBuffers+290)

native: #15 pc 0003d291 /system/lib/libhwui.so (???)

native: #16 pc 0003bd05 /system/lib/libhwui.so (???)

native: #17 pc 0003beb5 /system/lib/libhwui.so (???)

native: #18 pc 0003caed /system/lib/libhwui.so (???)

native: #19 pc 0003e743 /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+66)

native: #20 pc 000104d5 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+112)

native: #21 pc 0005f839 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+72)

native: #22 pc 00010045 /system/lib/libutils.so (???)

native: #23 pc 00016baf /system/lib/libc.so (__pthread_start(void*)+30)

native: #24 pc 00014af3 /system/lib/libc.so (__start_thread+6)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创业5年,我有5点关于人的思考

点击蓝字关注,回复“职场进阶”获取职场进阶精品资料一份不知不觉创业五年了,也算一个屡战屡败、屡败屡战的创业老兵了。从第一次失败要靠吃抗抑郁的药,到现在理性的看待成败得失,不得不说,创业这条路对我还是有不小提…

C++实现具有[数组]相似特征的类DoubleSubscriptArray

#include <iostream> using namespace std;class DoubleSubscriptArray {public:DoubleSubscriptArray(int x, int y) {p new int *[x];//行 //申请行的空间for (int i 0; i < x; i) {p[i] new int [y];//每行的列申请空间}for (int i 0; i < x; i)for (int j …

Docker-HealthCheck指令探测ASP.NET Core容器健康状态

写在前面HealthCheck 不仅是对应用程序内运行情况、数据流通情况进行检查&#xff0c;还包括应用程序对外部服务或依赖资源的健康检查。健康检查通常是以暴露应用程序的HTTP端点的形式实施&#xff0c;可用于配置健康探测的的场景有 &#xff1a;容器或负载均衡器 探测应用状态…

LeetCode28 对称的二叉树-简单

请实现一个函数&#xff0c;用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样&#xff0c;那么它是对称的。 例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。 1/ \2 2/ \ / \ 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1/ \2 2\ …

ASP.NET Core分布式项目实战(课程介绍,MVP,瀑布与敏捷)--学习笔记

任务1&#xff1a;课程介绍课程目标&#xff1a;1、进一步理解 ASP.NET Core 授权认证框架、MVC 管道2、掌握 Oauth2&#xff0c;结合 Identity Sercer4 实现 OAuth2 和 OpenID Connect Server3、掌握 ASP.NET Core 与 Redis, MongoDB, RabitMQ, MySQL 配合使用4、理解 DDD&…

html坐标轴背景色,CSS 背景(css background)

CSS 背景-CSS background一、Css background背景语法 - TOPCSS背景基础知识CSS 背景这里指通过CSS对对象设置背景属性&#xff0c;如通过CSS设置背景各种样式。背景语法&#xff1a;background: background-color || background-image || background-repeat || background-…

LeetCode 965单值二叉树-简单

如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;[1,1,1,1,1,null,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&…

使用EF.Core将同一模型映射到多个表

在 EntityFramework Core 中&#xff0c;我们可以使用属性或Fluent API来配置模型映射。有一天&#xff0c;我遇到了一个新的需求&#xff0c;有一个系统每天会生成大量数据&#xff0c;每天生成一个新的表存储数据。例如&#xff0c;数据库如下所示&#xff1a;所有表都具有相…

android创建类的包名称,如何知道/配置Xamarin Android生成的程序包名...

如果您未通过属性指定Xamarin,Xamarin会自动生成类ID一些例子&#xff1a;活动命名&#xff1a;[Activity(Label "ActivityNaming", Name "com.sushihangover.playscript.MyBigBadGame", MainLauncher true, Icon "mipmap/icon")]public cla…

[蓝桥杯2016决赛]愤怒小鸟-模拟

题目描述 X星球愤怒的小鸟喜欢撞火车&#xff01; 一根平直的铁轨上两火车间相距 1000 米。两火车 &#xff08;不妨称A和B&#xff09; 以时速 10米/秒 相对行驶。 愤怒的小鸟从A车出发&#xff0c;时速50米/秒&#xff0c;撞向B车&#xff0c;然后返回去撞A车&#xff0c;再返…

EntityFramework Core 3.x添加查询提示(NOLOCK)

前几天看到有博客园中有园友写了一篇关于添加NOLOCK查询提示的博文&#xff0c;这里呢&#xff0c;我将介绍另外一种添加查询提示的方法&#xff0c;此方式源于我看过源码后的实现&#xff0c;孰好孰歹&#xff0c;请自行判之&#xff0c;接下来我们一起来看看。在EntityFramew…

html自定义鼠标右键,js自定义鼠标右键的实现原理及源码

今天来记录下js来自定义鼠标右键&#xff0c;同样先来分解下它的实现原理&#xff1a;1、屏蔽右键默认事件&#xff1b;(一度我以为修改的就是默认事件)2、对一个ul的隐藏&#xff1b;(这个我也曾迂腐的认为值得这样操作的都是div&#xff0c;汗)3、对鼠标点击右键做出的响应&a…

计算成绩-二维数组指针(指向二维数组的指针)应用

题目: 要求自定义函数且函数的形式参数为行指针变量&#xff1a; 有一个10行5列的浮点型数组&#xff0c;用来存放10个学生5门课程的成绩&#xff0c;还有一个用来记录每个学生平均成绩的一维数组。要求定义函数来实现计算每个学生的平均成绩。学生各门成绩的输入和平均成绩的…

Xamarin.Forms客户端第一版

1. 功能简介1.1. 读取手机基本信息主要使用Xamarin.Essentials库获取设备基本信息&#xff0c;Xam.Plugin.DeviceInfo插件获取App Id&#xff0c;其实该插件也能获取设备基本信息。1.2. 读取手机联系人信息Android和iOS工程具体实现联系人读取服务&#xff0c;使用到Dependency…

[蓝桥杯2017初赛]包子凑数-模拟+巧妙枚举

题目描述 小明几乎每天早晨都会在一家包子铺吃早餐。这家包子铺有N种蒸笼&#xff0c;其中第i种蒸笼恰好能放Ai个包子 每种蒸笼都有非常多笼&#xff0c;可以认为是无限笼。 每当有顾客想买X个包子&#xff0c;卖包子的大叔就会选出若干笼包子来&#xff0c;使得这若干笼中恰好…

html中加个有颜色横线,关于html:更改下划线颜色

我在这里有此代码&#xff1a;echo"$username";首先&#xff0c;如您所见&#xff0c;它带有下划线()。 其次&#xff0c;所有文字均为红色。 那么&#xff0c;是否有将文本($ username)留为红色而下划线为黑的情况&#xff1f;因此&#xff0c;标签。HTML4不推荐使用…

给 EF Core 查询增加 With NoLock

给 EF Core 查询增加 With NoLockIntroEF Core 在 3.x 版本中增加了 Interceptor&#xff0c;使得我们可以在发生低级别数据库操作时作为 EF Core 正常运行的一部分自动调用它们。例如&#xff0c;打开连接、提交事务或执行命令时。所以我们可以自定义一个 Interceptor 来记录执…

LeetCode 138 复制带随机指针的链表-中等

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 n…

ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记...

任务4&#xff1a;第一章计划与目录敏捷产品开发流程原型预览与业务介绍整体架构设计API 接口设计 / swaggerIdentity Server 4 搭建登录账号 API 实现配置中心任务5&#xff1a;业务介绍项目背景&#xff1a;基于人脉关系的金融行业项目用户&#xff1a;1、账号&#xff1a;基…

LeetCode 82 删除排序链表中的重复元素||-中等

存在一个按升序排列的链表&#xff0c;给你这个链表的头节点 head &#xff0c;请你删除链表中所有存在数字重复情况的节点&#xff0c;只保留原始链表中 没有重复出现 的数字。 返回同样按升序排列的结果链表。 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,…