我编写了一个应用程序,它在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)

android webview framework,android – Webview导致ANR相关推荐

  1. android jni framework,Android Framework层的JNI机制(二)

    Java框架层中有很多地方使用JNI机制,每一个部分的框架层代码,都可能有与之对应的JNI库.先了解Java框架层的组成,继续看一下JNI在框架层中的使用. Java框架层的组成 Java框架层的实体 ...

  2. android webview anr,Android WebView客户端导致ANR

    我正在实现一个客户端库到OAUTH API.在认证过程中,webview客户端会启动并加载认证页面的URL.但是,webview客户端有时可以正确启动,但最近开始导致ANR.Android WebVi ...

  3. Android进阶之路 - WebView的使用与后退键处理

    本篇为大家带来的是WebView的多种使用场景讲解,说起WebView往往给大家带来的印象应该是Android与H5的混合开发,下面洒家为大家进行详细讲解 我那些关于WebView的回忆 ~ 包含入门 ...

  4. android webview es6,Android v 5.0 webview HTML5,CSS3和ES6兼容性

    我有一个使用Crosswalk的混合 Android应用程序.几个月前我转向Crosswalk,这是一个巨大的生产力提升.我花了很多时间测试不同的Android操作系统版本,并且在HTML5 / CS ...

  5. Android安全开发之WebView中的地雷

    0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等.WebView功能强大 ...

  6. WebView深究之Android是如何实现webview初始化的

    webview初始化 关注Android加载webview内核的过程.我们从WebView的init过程中切入. WebView的构造方法,最终都会调用 WebView(Context context ...

  7. Android安全开发之WebView中的地雷 1

    0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等.WebView功能强大 ...

  8. Android 进阶——性能优化之因Handler引起句柄泄漏导致ANR的定位和解决

    文章大纲 引言 一.场景重现 二.ANR 1.ANR概述 2.ANR 的主要类型 3.在Android中默认场景限制(超出就会ANR): 4.当应用程序的UI线程响应超时才会引起ANR 的原因 5.A ...

  9. UCML 原生Android中嵌入Cordova Webview

    Android实现在当前进程打开网页可以将Cordova中的WebView嵌入Android项目中,实现简单,不需要自己实现,所以掌握如何嵌入WebView对项目快速开发很有帮助 官方也有这方面的教程 ...

最新文章

  1. centos下开启ftp服务
  2. swift_027(Swift 的扩展)
  3. 在servlet中读取初始化参数和上下文参数的方法getServletContext()和getInitParameter()
  4. java 如何循环执行一个对象_一个Java对象到底有多大?
  5. ubuntu 开启ssh_CS学习笔记 | 22、通过SSH开通通道
  6. 《WCF技术内幕》翻译31:第2部分_第6章_通道:概述与正确认识通道。
  7. MYSQL中的日期转换
  8. python工资高还是java-Python工资高还是Java?
  9. 95%的码农都在用的编程神器,值得一看!
  10. Linux好用命令之dig命令
  11. window双网卡上网
  12. JQuery实现简单小农场
  13. Oracle19C下载安装教程(图文详解)
  14. urllib爬虫封装(可设置代理,记录日志)方法
  15. 在scrapy中params无处安放???
  16. unity3d技术摄像头跟随_unity 3d 中摄像头跟随人物移动总结
  17. js:webpack插件BannerPlugin添加版权信息
  18. 常用英语口语175句
  19. Nginx_01_Nginx三大基础功能(静态服务器、虚拟主机、负载均衡/服务端代理)
  20. html转成16进制数,16进制转换(十六进制,二进制(包含小数)相互转换)

热门文章

  1. python 数据分析找到老外最喜欢的中国美食【完整代码】
  2. mysql5.7.16安装版_mysql数据库5.7.16安装版怎么安装图解
  3. c 正则提取html,c – 正则表达式以获取HTML表格内容
  4. python为text添加滚动条_在Tkinter中向一组小部件添加滚动条
  5. Oracle DBA
  6. 美女晕倒怎么办?二哈:这不是一滋就醒......
  7. Spark ML - 聚类算法
  8. ef 关联依赖属性_基础巩固之:xmlns属性梳理
  9. linux启动xorg进程,Linux 黑话解释:Xorg,X11,Wayland,什么是显示服务器
  10. 计算机在学前教育和美术绘画中的应用,幼儿园美术教学活动中信息技术的应用...