Android: Что означает это предупреждение? - (WebCore)

У меня есть Галерея, которая содержит WebView как ее дочерние элементы, когда я просматриваю галерею, я получаю следующее предупреждение,

'04-07 19:35:37.409: WARN/webcore(664): Can't get the viewWidth after the first layout
 04-07 19:35:37.470: WARN/webcore(664): skip viewSizeChanged as w is 0'

О чем это предупреждение? [Я не запрограммировал какие-либо параметры макета.]

Любой свет, почему это предупреждение происходит, будет действительно полезно...

и они также были напечатаны

04-15 11:10:13.202: DEBUG/webviewglue(617): nativeDestroy view: 0x257f40
04-15 11:10:13.243: DEBUG/webviewglue(617): nativeDestroy view: 0x25d680
04-15 11:10:13.292: DEBUG/webviewglue(617): nativeDestroy view: 0x240688
04-15 11:10:13.332: DEBUG/webviewglue(617): nativeDestroy view: 0x249918
04-15 11:10:13.373: DEBUG/webviewglue(617): nativeDestroy view: 0x226608
04-15 11:10:13.423: DEBUG/webviewglue(617): nativeDestroy view: 0x21e418
04-15 11:10:13.482: DEBUG/webviewglue(617): nativeDestroy view: 0x23a4e8
04-15 11:10:13.533: DEBUG/webviewglue(617): nativeDestroy view: 0x235c68
04-15 11:10:13.572: DEBUG/webviewglue(617): nativeDestroy view: 0x212a28

Спасибо заранее.

Ответ 1

У меня была та же проблема, что и мой обычный веб-просмотр, и я дал ту же ошибку, что и вы описали.

skip viewSizeChanged as w is 0

Как я понимаю, это связано с увеличением Android, которое позволяет более новые устройства, чтобы избежать приложений (предназначенных для телефонов), как небольших оконных приложений, например. таблетки.

Мое решение:

WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setBuiltInZoomControls(true);

последняя строка setBuiltInZoomControls (true) заставила проблему исчезнуть для меня. Надеюсь, это поможет вам!

[РЕДАКТИРОВАТЬ] Это решение работало отлично для меня вчера, однако сегодня утром я снова получил ошибку. Это, вероятно, не решение. Извините за вводящий в заблуждение пост.

[EDIT2] Теперь я изменил свой код, и после этого я не испытал ошибку, я без проблем выполнил тестовый набор из 1000 итераций. То, что решило мою проблему, было то, что URL-адрес не был правильно передан веб-просмотру. Он получил пустую строку, убедившись, что правильный URL-адрес проблема исчезла. Надеюсь, это поможет кому-то.

Ответ 2

Ваш viewSize изменился и уведомляет об этом, по какой-либо причине значение ширины 0 (возможно, масштабирование). Как показано здесь:

// notify webkit that our virtual view size changed size (after inv-zoom)
            private void viewSizeChanged(int w, int h, int textwrapWidth,
                    float scale, int anchorX, int anchorY, boolean ignoreHeight) {
                if (DebugFlags.WEB_VIEW_CORE) {
                    Log.v(LOGTAG, "viewSizeChanged w=" + w + "; h=" + h
                            + "; textwrapWidth=" + textwrapWidth + "; scale="
                            + scale);
                }
                if (w == 0) {
                    Log.w(LOGTAG, "skip viewSizeChanged as w is 0");
                    return;
                }
                int width = w;
                if (mSettings.getUseWideViewPort()) {
                    if (mViewportWidth == -1) {
                        if (mSettings.getLayoutAlgorithm() == WebSettings.LayoutAlgorithm.NORMAL) {
                            width = WebView.DEFAULT_VIEWPORT_WIDTH;
                        } else {
                            /*
                             * if a page minimum preferred width is wider than the
                             * given "w", use it instead to get better layout result. If
                             * we start a page with MAX_ZOOM_WIDTH, "w" will be always
                             * wider. If we start a page with screen width, due to the
                             * delay between {@link #didFirstLayout} and
                             * {@link #viewSizeChanged},
                             * {@link #nativeGetContentMinPrefWidth} will return a more
                             * accurate value than initial 0 to result a better layout.
                             * In the worse case, the native width will be adjusted when
                             * next zoom or screen orientation change happens.
                             */
                            width = Math.min(WebView.sMaxViewportWidth, Math
                                    .max(w, Math.max(
                                            WebView.DEFAULT_VIEWPORT_WIDTH,
                                            nativeGetContentMinPrefWidth())));
                        }
                    } else if (mViewportWidth > 0) {
                        width = Math.max(w, mViewportWidth);
                    } else {
                        width = textwrapWidth;
                    }

            }

Документация, которую я использовал для этой ссылки, здесь для получения дополнительной информации. Не видя ваш код, я точно не знаю, почему это происходит. Тогда это, очевидно, просто пропускает настройку любых видов с этими параметрами, и поэтому у вас есть ваши журналы.

[EDIT] Не имея возможности показать код (понятный), единственное, что я могу действительно упомянуть, кроме того, что я сказал ранее, - это дискуссия, которую я недавно прочитал , которая проливает свет на тот факт, что разные контексты содержат разные данные. Возможно, вы сможете использовать Контекст активности вместо Engine или Контекст приложения. Не очень помогает, но может быть первым золотым кирпичом.: -? Приятель удачи, надеюсь, что ты справишься, и я оставлю глаза на любые ссылки, чтобы дать тебе.