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

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

问题是不可重复的,因为如果我重新启动应用程序并导航到ANR发生时显示的同一页面,则不会再次发生。 设备是运行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 内存溢出,android相关推荐

  1. android webview 内存溢出,Android 内存溢出和内存泄漏的问题

    Android 内存溢出和内存泄漏的问题 在面试中,经常有面试官会问"你知道什么是内存溢出?什么是内存泄漏?怎么避免?"通过这篇文章,你可以回答出来了. 内存溢出(OOM)是指程序 ...

  2. android 避内存溢出,Android避免内存溢出(Out of Memory)方法总结

    Android避免内存溢出(Out of Memory)方法总 结 避免内存溢出的方法,主要是对以下三个方面对程序进行优化武汉Android培训 内存引用 在处理内存引用之前,我们先来复习下什么是强引 ...

  3. android webview内存泄漏,Android由webview引起的内存泄漏

    业务场景:MainActivity中有4个tab,分别为 webview加载斗鱼主页,视频播放,webview加载五星体育,地图等四个模块.在加载web的时候发现内存泄露. 首先不能直接在xml写we ...

  4. Xamarin Android提示内存溢出错误

    Xamarin Android提示内存溢出错误 错误信息:java.lang.OutOfMemoryError, Consider increasing the value of $(JavaMaxi ...

  5. 彻底解决Android 拍照 内存溢出 Out of Memory的问题

    内存溢出相信做过编程的人都知道一二,这里说Android 内存溢出的问题:.问题描述:Android下的相机在独自使用时,拍照没有问题,通过我们的代码调用时,也正常,但是更换了不同厂商的平板,ROM由 ...

  6. 【android开发】Android防止内存溢出浅析

    近期项目做得差点儿相同了,測试出现了一些问题,当中一个就是内存溢出问题,在三星手机上測试最easy出现内存溢出,在其它手机上,比方华为就没有发生,也是比較郁闷.这个问题在之前的公司,做项目时也遇到过, ...

  7. Android之内存溢出(Out Of Memory)的总结

    图片越来越多,内存溢出已经成了不得不注意的问题了. 错误日志:11-03 12:36:54.812: ERROR/AndroidRuntime(5084): Caused by: java.lang. ...

  8. android防止内存溢出浅析

    Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M.但是Android采用的是Java语言编写,所以在很大程度上,Android的内存机制等同于Java的内存机制,在刚开始开 ...

  9. Android避免内存溢出(Out of Memory)方法总结

    避免内存溢出的方法,主要是对以下三个方面对程序进行优化 内存引用 在处理内存引用之前,我们先来复习下什么是强引用.软引用.弱引用.虚引用 强引用:强引用是使用最普遍的引用.如果一个对象具有强引用,那垃 ...

最新文章

  1. 关于MySQL redo log,挖些坑,慢慢填
  2. 中getname_Spring IOC中的灵魂伴侣:BeanFactory ApplicationContext
  3. [FAQ]VC读取数据源列表和驱动程序列表
  4. redis 保存 array list 区别_为什么Redis的RDB备份不用多线程实现CopyOnWrite?
  5. aws集群重启_在AWS中设置Cassandra集群
  6. tomcat 设置虚拟路径的4种方法
  7. git安装-centos版
  8. 信息化、数字化和数字化转型的本质是什么?
  9. Window setTimeout() 方法
  10. 汇编学习从入门到精通
  11. matlab获取ipv4地址,【MATLAB】从 IP camera 撷取影像
  12. 推荐8个堪称神器的网站!
  13. 群环域,理想商环,原根复习
  14. kali内置超好用的代理工具proxychains
  15. To run in silent mode, OPatch requires a response file for Oracle Configuration Manager (OCM).
  16. uwp版的音乐播放器练手
  17. IPU到底是个什么鬼?
  18. 大智慧2 分笔数据提取工具
  19. 人工神经网络ANN建模基础须知
  20. LFSR线性反馈移位寄存器循环码编码原理

热门文章

  1. Nginx的安装配置
  2. Android得到视频缩略图
  3. Scrum联盟发布2015年Scrum状况报告
  4. Flash,一次Bug的思考
  5. 存储虚拟化之带内设备与基于存储控制器的虚拟化
  6. java ide编辑器 idea 配置 与 插件
  7. linux shell mkdosfs 命令用于建立 dos 文件系统
  8. ATTCK矩阵 linux系统安全实践
  9. 数据库 sqlite order by对结果集进行排序
  10. python3 str is not callable 问题解决