- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一段代码在 UI 线程上运行,它要求 RelativeLayout
和 WebView
绘制到 Canvas
上:
someRelativeLayoutContainingWebView.draw(canvas);
这一行在某些 Android Lollipop 5.0 设备(Nexus 4、Nexus 5)上会崩溃,但在其他设备(Nexus 7)上可以正常工作。崩溃日志显示以下内容:
--------- beginning of crash
F/libc (20829): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8d68fc68 in tid 21178 (Thread-860)
W/art (20829): Attempt to remove local handle scope entry from IRT, ignoring
I/DEBUG ( 184): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 184): Build fingerprint: 'google/occam/mako:5.0/LRX21T/1576899:user/release-keys'
I/DEBUG ( 184): Revision: '11'
I/DEBUG ( 184): ABI: 'arm'
I/DEBUG ( 184): pid: 20829, tid: 21178, name: Thread-860 >>> com.[censored] <<<
I/DEBUG ( 184): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8d68fc68
I/DEBUG ( 184): r0 8d68fc68 r1 00000020 r2 000000df r3 20202020
I/DEBUG ( 184): r4 00000001 r5 8d68fc68 r6 8d68fc68 r7 a62a0241
I/DEBUG ( 184): r8 b86f9e13 r9 b86f982a sl ffffffff fp 000000ff
I/DEBUG ( 184): ip 20002000 sp a32988f8 lr a62525f9 pc a62a02bc cpsr 200b0030
I/DEBUG ( 184):
I/DEBUG ( 184): backtrace:
I/DEBUG ( 184): #00 pc 003552bc /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #01 pc 003075f7 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #02 pc 002c450f /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #03 pc 002c4589 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #04 pc 002c6b41 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #05 pc 002c6ffb /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #06 pc 002c4b83 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #07 pc 002c4c51 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #08 pc 002adff5 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #09 pc 002fea4f /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #10 pc 002aa35f /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #11 pc 0032d4ef /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #12 pc 002bd2d1 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #13 pc 00e0ef7b /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #14 pc 00e14a4d /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #15 pc 00e14af3 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #16 pc 00e4cbd1 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #17 pc 00e1ccd1 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #18 pc 00e1ce17 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #19 pc 00204333 /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #20 pc 0020458d /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #21 pc 002023cb /system/lib/libwebviewchromium.so
I/DEBUG ( 184): #22 pc 000158a7 /system/lib/libc.so (__pthread_start(void*)+30)
I/DEBUG ( 184): #23 pc 0001387b /system/lib/libc.so (__start_thread+6)
绘图大约每秒调用一次。直到第 40 次到第 120 次在我的应用程序的单次运行中调用 draw()
时才会发生崩溃。我所有未安装 Lollipop 的测试设备都可以正常工作,不会崩溃。
如果我从 RelativeLayout
中删除 WebView
,但保留所有其他元素,也不会发生崩溃。 WebView
会加载网站并正常运行一段时间,直到发生崩溃。如果我不调用 loadUrl()
,则不会发生崩溃。无论我加载哪个网站,都会发生崩溃。
我能做些什么来解决这个问题吗?
我在这里找到了一些解决问题的资源:https://groups.google.com/forum/#!topic/android-developers/W6smaM1atE8
但是,在这种情况下使用的功能已被弃用很长时间。
这里有一些额外的信息来回答@marcin.kosiba 的问题:
是的,这是前面几行:
Bitmap bmp = Bitmap.createBitmap(someRelativeLayoutContainingWebView.getWidth(), someRelativeLayoutContainingWebView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
someRelativeLayoutContainingWebView.draw(canvas);
如您所见,它是 RelativeLayout
的整个宽度和高度,它占据了设备的整个屏幕,减去设备的状态栏和软后退/主页按钮栏。我的应用程序未在全屏模式下运行。
WebView 附加到 View 层次结构并出现在屏幕上。它占据了大部分屏幕,只剩下顶部的一个小栏。
除非覆盖 WebView
类,否则我无法直接调用 onDraw()
。然而,这样做后,崩溃并没有发生。
不幸的是,这是一个相当大的项目,Activity
中有很多事情都存在这个问题。我将无法公开共享整个源代码,我知道这会使解决问题变得更加困难。这是 View 层次结构的骨架:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/someRelativeLayoutContainingWebView">
<DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/topRelativeLayout">
<!-- Main content -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/primaryWebView"
android:scrollbarStyle="insideOverlay"
android:fadeScrollbars="true"
android:scrollbarThumbVertical="@drawable/scrollbar"
android:scrollbarSize="@dimen/scroll_bar_size"/>
<RelativeLayout>
<EditText/>
<Button/>
<View/>
<Button/>
</RelativeLayout>
</RelativeLayout>
<View/>
</RelativeLayout>
<!-- Navigation drawer -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left">
<RelativeLayout>
<TextView/>
<ViewPager/>
<View/>
<LinearLayout>
<Button/>
<View/>
<Button/>
</LinearLayout>
<LinearLayout>
<Button/>
</LinearLayout>
<Button/>
<Button/>
<Button/>
</RelativeLayout>
<View/>
</RelativeLayout>
</DrawerLayout>
<!-- Top bar -->
<RelativeLayout android:layout_width="match_parent"
android:layout_height="@dimen/some_height"
id="@+id/topRelativeLayout">
<RelativeLayout>
<SurfaceView/>
<TextView/>
</RelativeLayout>
<Button/>
<RelativeLayout>
<EditText/>
<Button/>
</RelativeLayout>
</RelativeLayout>
<View/>
<ProgressBar/>
<TextView/>
</RelativeLayout>
最佳答案
目前不确定您是否可以做任何事情。我提交了 http://crbug.com/441707代表你。了解问题的原因可以更容易地提出解决方法。如果您能澄清一些事情(最好是关于错误),那将会很有帮助:
关于android - WebView.draw(canvas) 有时会在某些设备上的 Android Lollipop 5.0+ 中崩溃 - 致命信号 11 (SIGSEGV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431336/
我使用工具栏是为了在我的应用程序中进行 Material 设计。一切正常,但除了更改菜单项文本颜色时,我完全无法接受该解决方案。我还张贴了我在申请中使用的文本和代码的屏幕截图,供您引用。我尝试了几种替
看起来 FloatingActionButton 在 Android 4.0 和 Lollipop 上无法正常工作。正如您在下图中看到的那样,在 Android Lollipo 上,阴影缺失,而在 A
SDK 升级到 Android 5 后,我无法使用 Intel 硬件加速执行管理器: $ android-sdk-macosx/tools/emulator -avd AVD_for_LowMemor
SDK升级到Android 5后,无法使用Intel Hardware Accelerated Execution Manager: $ android-sdk-macosx/tools/emulat
我有不同 draw9patch png 作为背景的按钮。目前按钮由 selector 控制,看起来像这样: 对于 Android Lollipop,他们有一个用于触摸效果的
我尝试在 Pre-Lollipop 设备上运行我的应用程序。但是这段代码向我显示了 Pre-Lolliop 和 Lollipop 设备的相同错误。 如果我将“android:”添加到样式中(如样式 2
我实现了一个自定义的 SurfaceView 来绘制相机预览,并在其上完成了所有捕获和手动对焦操作。它在 Pre-Lolipop 设备上运行良好,但问题是它在 Lollipop 设备上崩溃。 发生的最
风格 @color/my_primary_color @color/my_primary_dark_color @color/accent 布局
我想在 Lollipop 设备中显示较旧的时间选择器(如 Lollipop 设备之前的时间选择器)。可以 这是可能的。 最佳答案 您可以通过将 timePickerMode 属性设置为“spinner
嗨,所以我有点困惑,想知道是否有人能指出我正确的方向。 在 Lollipop 和 pre-lollipop 上使用 Google Play 商店 您会在 Lollipop 上看到可选择的 View 具
如果我们希望使用 Material Design 的应用同时支持 Lollipop 和 Lollipop 之前的设备,以下哪种方法是正确的? 单独使用 Android 支持库:仅对整个应用程序使用支持
我正在使用 appcompat/support-v7 中引入的新工具栏小部件。我想根据用户是否向上/向下滚动页面来隐藏/显示工具栏,就像在新的 Google Playstore 应用程序或 NewsS
我的数据库中有一个 .mhtml 文件作为字节数组。我写了下面的代码,它在 Lollipop 之前的设备上运行良好。但它不适用于 Lollipop 和棉花糖。 代码:- String p
根据标题,我能够在下面的 Lollipop 中成功读取/写入数据,但在 Lollipop 中多次读取/写入失败。 这就是我读/写数据的方式: boolean isRead= getmBluetooth
我刚刚在 Android Studio 上安装了 Android 5,并在模拟器上进行了第一次运行。我发现“API Demos”应用程序非常有趣,我想找到代码。我说的是这个应用程序: 有人知道我在哪里
我正在关注 this tutorial在 Android Material Design 中使用颜色(我的 ActionBar 和 StatusBar)。我确实按照教程进行操作,但没有反射(refle
在我的应用程序中,用户可以通过它调用任何号码,我正在启动蓝牙 audioManager.setBluetoothScoOn(true); audioManager.startBluetoothSco(
我正在我的 android 应用程序中实现 Google map API v2。该应用程序在所有设备上都可以正常工作,但在 Lollipop 设备上却不行。应用程序在 Lollipop 中崩溃。我确实
我正在开发一个项目,其中有一个日期选择器。我正在尝试为其设置最大日期和最短日期。最短日期是今天之后 1 天,最大日期是今天之后 11 天。但问题是在 Lollipop 设备中,最后一个最大日期显示为可
我正在使用嵌入式无线系统,它以定义的时间间隔生成数据包。目的是检测设备/系统何时重新启动。为此,我读到 Lollipop 序列编号是最适合此目的的编号方案。 “在此编号方案中,序列号从负值开始,增加直
我是一名优秀的程序员,十分优秀!