Android java implementación defectos .. ¿están documentados?
Estoy jugando con una aplicación androide simple usando el emmulador que ejecuta android-7 (2.1) y un moto-desafío que ejecuta android-8 (2.2).
Me encontré con un problema interesante por el cual una aplicación de análisis de CSV falló en el emmulador, pero tuvo éxito en el desafío y en las aplicaciones java regulares (utilizando sun java).
- Android Studio 2.0 - NoSuchAlgorithmException: SHA256WITHDSA Firma no disponible
- Importar archivo .jar externo al proyecto Android
- Prueba de unidad Android: ¿Cómo hacer que una clase sea más comprobable?
- Recuperar el estado de la conexión wifi (Android)
- Texto de recorte de Facebook en Android cuando se usa una intención de ACTION_SEND
Seguí el problema hacia abajo y la causa es que la implementación de androide-7 de StringReader no es compatible con una operación de omisión negativa:
Android-7:
/** * Skips {@code amount} characters in the source string. Subsequent calls of * {@code read} methods will not return these characters unless {@code * reset()} is used. * * @param ns * the maximum number of characters to skip. * @return the number of characters actually skipped or 0 if {@code ns < 0}. * @throws IOException * if this reader is closed. * @see #mark(int) * @see #markSupported() * @see #reset() */ @Override public long skip(long ns) throws IOException { synchronized (lock) { if (isClosed()) { throw new IOException(Msg.getString("K0083")); //$NON-NLS-1$ } if (ns <= 0) { return 0; } long skipped = 0; if (ns < this.count - pos) { pos = pos + (int) ns; skipped = ns; } else { skipped = this.count - pos; pos = this.count; } return skipped; } }
J2SE 1.6:
/** * Skips the specified number of characters in the stream. Returns * the number of characters that were skipped. * * <p>The <code>ns</code> parameter may be negative, even though the * <code>skip</code> method of the {@link Reader} superclass throws * an exception in this case. Negative values of <code>ns</code> cause the * stream to skip backwards. Negative return values indicate a skip * backwards. It is not possible to skip backwards past the beginning of * the string. * * <p>If the entire string has been read or skipped, then this method has * no effect and always returns 0. * * @exception IOException If an I/O error occurs */ public long skip(long ns) throws IOException { synchronized (lock) { ensureOpen(); if (next >= length) return 0; // Bound skip by beginning and end of the source long n = Math.min(length - next, ns); n = Math.max(-next, n); next += n; return n; } }
Por lo tanto, en lugar de saltar hacia atrás (el analizador utiliza esto para pre-leer un carácter en ciertos casos) la versión de Android sigue siendo un carácter hacia adelante.
Mi pregunta es, son las diversas incompatibilidades y variaciones de la especificación J2SE documentado en cualquier lugar? Si no, ¿qué otros problemas tienen ustedes chocar.
Gracias, p.
- Cómo obtener el IP del hotspot wifi en Android?
- Ubicaciones de Cell Tower - Android
- cómo convertir el valor de fecha larga en formato mm / dd / aaaa
- Convertir de String a BigDecimal para hacer matemáticas en moneda
- Java.lang.RuntimeException: No se puede instanciar la actividad ComponentInfo {...}: java.lang.ClassNotFoundException: No encontró la clase
- Generar un Javadoc para mi proyecto de Android
- Android crop ImageView dentro del padre RelativeLayout
- ¿Cómo puedo obtener el valor entre paréntesis en una cadena
Un lugar para mirar es el rastreador de problemas de Android.
Otro lugar para mirar es el perseguidor de problemas de Apache Harmony.
Hay que reconocer que el uso de los rastreadores de temas implicará buscar en lugar de navegar por una red de temas cuidadosamente categorizados. Podrías pensar en esto como una oportunidad …
FWIW – la búsqueda de la Harmony tema seguimiento muestra que ha habido algunos problemas con el comportamiento de skip
en varias clases de flujo. Un problema se quejaba de que el comportamiento de alguna clase no coincidía con el javadoc … y que estaba cerrado diciendo que coincidía con el comportamiento de RI, y que el error estaba por lo tanto en el javadoc.
Mi opinión es que Sun / Oracle tiene mucha culpa por este tipo de cosas debido a su negativa a licenciar el TCK al proyecto Apache Harmony en términos razonables.
- ¿Cómo calcular el usuario activo en Mobile App Analytics?
- Eclipse y Android XML layouts da "'default' no es el mejor partido para cualquier combinación de dispositivo / locale"