java - Android 应用程序(Webview)因闪屏而崩溃

标签 java android xml webview

某些手机(例如三星 S6 或 S7)无法启动我的 Android Webview 应用程序。这是我从 Google Play 商店获得的:

java.lang.RuntimeException:

  at android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260)
  at android.graphics.Canvas.drawBitmap (Canvas.java:1420)
  at android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:545)
  at android.widget.ImageView.onDraw (ImageView.java:1286)
  at android.view.View.draw (View.java:18318)
  at android.view.View.updateDisplayListIfDirty (View.java:17296)
  at android.view.View.draw (View.java:18080)
  at android.view.ViewGroup.drawChild (ViewGroup.java:3966)
  at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752)
  at android.view.View.updateDisplayListIfDirty (View.java:17291)
  at android.view.View.draw (View.java:18080)
  at android.view.ViewGroup.drawChild (ViewGroup.java:3966)
  at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752)
  at android.view.View.updateDisplayListIfDirty (View.java:17291)
  at android.view.View.draw (View.java:18080)
  at android.view.ViewGroup.drawChild (ViewGroup.java:3966)
  at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752)
  at android.view.View.updateDisplayListIfDirty (View.java:17291)
  at android.view.View.draw (View.java:18080)
  at android.view.ViewGroup.drawChild (ViewGroup.java:3966)
  at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752)
  at android.view.View.updateDisplayListIfDirty (View.java:17291)
  at android.view.View.draw (View.java:18080)
  at android.view.ViewGroup.drawChild (ViewGroup.java:3966)
  at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752)
  at android.view.View.updateDisplayListIfDirty (View.java:17291)
  at android.view.View.draw (View.java:18080)
  at android.view.ViewGroup.drawChild (ViewGroup.java:3966)
  at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752)
  at android.view.View.draw (View.java:18321)
  at com.android.internal.policy.DecorView.draw (DecorView.java:919)
  at android.view.View.updateDisplayListIfDirty (View.java:17296)
  at android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:692)
  at android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:698)
  at android.view.ThreadedRenderer.draw (ThreadedRenderer.java:806)
  at android.view.ViewRootImpl.draw (ViewRootImpl.java:3128)
  at android.view.ViewRootImpl.performDraw (ViewRootImpl.java:2924)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2516)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1515)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7091)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:927)
  at android.view.Choreographer.doCallbacks (Choreographer.java:702)
  at android.view.Choreographer.doFrame (Choreographer.java:638)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:913)
  at android.os.Handler.handleCallback (Handler.java:751)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6682)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

这似乎是我的启动画面,就是这样:

activity_main.xml:

//splashscreen fullscreen
<ImageView
    android:id="@+id/splash1"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    android:adjustViewBounds="true"
    android:screenOrientation="portrait"
    android:visibility="visible"
    android:src="@drawable/redsplashscreen"
    />

//shows the webview fullscreen
<WebView
    android:id="@+id/web1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="gone"

MainActivity.java fragment :

boolean splashFinished = false;

    @Override
    public void onPageFinished(WebView view, String url) {
        //loads splashscreen once till website is loaded
        if (!splashFinished) {
            //hides loading image
            findViewById(R.id.splash1).setVisibility(View.GONE);
            //shows webview
            findViewById(R.id.web1).setVisibility(View.VISIBLE);
            splashFinished = true;
        }

这里有人说我必须将图像从“drawable”文件夹移动到“drawable-xxhd”,我尝试了它,但是当我想创建APK时,android studio将其移回并更改了xml代码。

顺便说一句,图像并不是很大,我将大小从 1.7MB 更改为 0.7MB。

最佳答案

就我而言,某些手机无法处理大的启动图像文件。 我的是 1.xMB,减小文件大小后,不再崩溃。

减小文件大小。

关于java - Android 应用程序(Webview)因闪屏而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689983/

相关文章:

java - 将ajax GET请求参数转换为域对象并传递给Spring Controller,如@RequestBody

java - 扫描仪无法在 StringBuilder 上运行

android - WebView : webpage not available but I load it from an html string

android - NavUtils.shouldUpRecreateTask 在 JellyBean 上失败

java - 将 XML 文件发送到 Android 中的 Web 服务器

Java - 如何创建 Class<Map<Object,List<Object>>> 对象

java - 从 JSF 2 数据表导出到电子表格

android - 如何在 EditText 上应用 Textchange 事件

php - xml 中未显示的整数的第一个数字为零

java - 如何自己从 XML 文件构建 DOM 树,即不使用 DocumentBuilder.parse(xml)?