2011-04-07 11 views
11

tengo una galería que contiene WebView de que sus hijos, cuando me desplazo la Galería estoy recibiendo el siguiente aviso,Android: ¿a qué se refiere este mensaje de advertencia? - (WebCore)

'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' 

¿Qué esta advertencia se refiere? [No he hardcoded cualquiera de los parametros de diseño.]

Cualquier luz sobre por qué se produce esta advertencia sería muy útil ...

y estos fueron impresos demasiado

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 

Gracias de antemano.

Respuesta

1

Tuve el mismo problema que mi vista web normal no funcionaría y me dio el mismo error que usted ha descrito.

skip viewSizeChanged as w is 0 

como yo lo entiendo esto tiene que ver con zoom Android, que permite a los nuevos dispositivos con el fin de evitar aplicaciones (diseñado para los teléfonos) aparecen como pequeñas aplicaciones de ventanas sobre, por ejemplo, tabletas

Mi solución:

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

los últimos setBuiltInZoomControls línea (verdadera) hizo desaparecer el problema para mí. ¡Espero que esto te ayude!

[EDITAR] Esta solución funcionó bien para mí ayer, sin embargo, esta mañana recibí el error nuevamente. Probablemente esta no sea la solución. Lo siento por una publicación engañosa.

[EDIT2] Ahora que he cambiado mi código y no he vuelto a experimentar el error, ejecuté un conjunto de pruebas de 1000 iteraciones sin errores. Lo que resolvió mi problema fue que la URL no se pasó correctamente a la vista web. Obtuvo una cadena vacía, después de asegurarse de que una url correcta el problema desapareció. Espero que esto ayude a alguien.

+0

@macbac - Voy a probar y marcar como aceptado si resuelve el problema ... – 66CLSjY

+0

@macbac - aceptado. srry para respuesta tardía :) estaba un poco ocupado para comprobar. – 66CLSjY

+0

Bien Algún tiempo también se produce si la altura o el ancho de diseño de su WebView es respectivo a su elemento primario. configurarlo para que coincida con el padre y comprobar. –

1

Su viewSize ha cambiado y notifica esto, con el valor de ancho de 0 por alguna razón (zoom posible). Como se ve aquí:

// 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's 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; 
        } 

      } 

La documentación que utilicé para esta referencia es here para más información. Sin embargo, sin ver tu código, no estoy seguro de por qué está sucediendo exactamente. Entonces, obviamente, se saltea el ajuste de cualquier vista con estos parámetros y, por lo tanto, tiene sus registros.

[EDIT] Sin ser capaz de mostrar código (comprensible) la única cosa que realmente puede hacer referencia distinto de lo que he dicho antes es una discusión que leí hace un tiempo here, que arroja luz sobre el hecho de que los diferentes contextos contienen datos diferentes Es posible que pueda utilizar el contexto de la actividad en lugar del motor o el contexto de la aplicación. No es de mucha ayuda, pero podría ser un primer ladrillo dorado. : -? Buena suerte amigo, espero que te las arregles y voy a mantener los ojos fuera de cualquier referencia para darte.

+0

Gracias, pero ya conocía la referencia anterior. No entiendo la razón por la cual el ancho es cero. Quiero decir que puedo ver el WebView en la pantalla. Si utilizo un TextView en lugar de WebView, esta advertencia no aparece ... En cuanto al código por razones legales, no puedo publicarlo. – 66CLSjY

+0

@Fresh_Meat, agregué otra referencia para que la mires. No es mucha ayuda, pero también, ¿estás usando esto para anuncios? Si es así, ¿puedes decir el tipo? ¿empresa? etc ...? –

Cuestiones relacionadas