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).
- ¿Cómo puedes localizar una oración con un número dinámico de conjunciones?
- Bloquear el cuadro de diálogo desde el código JNI
- Java cronometrar, System.nanoTime () batear que System.currentTimeMillis () pero persiste sobre sueño?
- Error del compilador: com.sun.tools.javac.code.Symbol $ CompletionFailure: archivo de clase para rx.Observable no encontrado
- OpenCV FeatureDetector
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.
- ANR en SurfaceView en dispositivos específicos solamente - La única solución es un tiempo de sueño corto
- Java.lang.ClassCastException: org.json.simple.JSONArray no se puede convertir en org.json.JSONArray
- HTTP / 1.1 400 Petición incorrecta en httpGet con autenticación base
- Regex para eliminar espacios entre números solamente
- Java.lang.NoSuchMethodError: Ninguna clase de método de interfaz (Ljava / util / Comparator;) excepción en la clasificación de arraylist android
- Obtener código fuente HTML de codificado EditText en Android
- Cómo escuchar eventos de GC en Android
- El usuario no es elegible para esta compra en la versión de compra de aplicaciones3
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"