Comunicaciones de Dalvik a Java SE
Estoy planeando desarrollar una aplicación para Android que requiere un servidor de fondo para sincronizar datos con otros usuarios de la aplicación. Estoy pensando en escribir este servidor en java estándar que se ejecuta en un servidor unix.
Una vez hice esto directamente entre dos dispositivos de Android, en ese caso, sólo serializado todos los datos necesarios para ser enviado en ambos extremos.
- Leer / escribir un objeto en un archivo
- Buffers de Android y Protocolo
- BroadcastReceiver ClassNotFound Exception
- ¿Cómo puedo inyectar un objeto en Android Priority Job Queue con Dagger 2?
- ObjectInputStream me da un objeto vacío (pero el archivo leído no está vacío)
Sin embargo, sospecho que el formato que Dalvik serializa y el formato de Java SE no son compatibles. ¿Es este el caso? Y si lo es, ¿cuáles son mis alternativas? Una cosa que surgió en mi mente fue el envío de xml crudo a través de un socket, pero si hay mejores alternativas voy a estar encantado de escucharlos.
Gracias.
- Android NotSerializableException aumenta para un objeto
- ¿Cómo puedo hacer una petición Volley JSONObject con un objeto personalizado como parámetro?
- ¿La aplicación de Android restablece el cambio de orientación, la mejor manera de manejar?
- ¿Cómo puedo serializar un RealmObject a JSON en Realm for Java?
- Serialización v / s
- Cómo serializar doble valor utilizando kSOAP en Android
- Serializar un objeto Drawable en Android
- ¿Se limpia la actividad de Android instanceState durante la actualización de la aplicación?
Si usted está haciendo un servidor, entonces debe confiar en algo más estándar como XML o JSON. Personalmente, estoy a favor de JSON. Usted no debe esperar que todo su cliente sea Java amistoso. Casi todos los dispositivos móviles admiten JSON. Mira la biblioteca de Jackson para generar tu json. A continuación, puede utilizar Jackson de nuevo para deserializar su objeto.
La belleza de esta solución es también estúpido simple. Puede ver el contenido simplemente poniendo la solicitud en su navegador. No es tan fácil con datos binarios.
He utilizado serialización de datos con éxito entre dispositivos Android y servidores.
Tuve que convertir la clase TimeZone
a String y volver porque la clase TimeZone
en particular no es totalmente compatible (intentó transferir algo al sun.
Paquete que obtuvo ClassNotFoundException
en Android).
Aparte de eso, he podido transferir objetos de colecciones y mapas java.util
y de tipos de datos java.sql
y por supuesto los tipos java.lang
String
, Integer
, etc.
Puede probar protobuf para la serialización. Se dice que es más eficiente, y no le preocupará la compatibilidad.
También puede utilizar algún tipo de serialización XML (JAXB, XStream, XMLEncoder, etc)
La resolución de esta pregunta insinúa que es compatible.
Si su gráfico de objeto es bastante simple y si se siente cómodo con JSON en absoluto, Android tiene soporte JSON incluido y sería fácil obtener soporte en Java SE. Tiendo a pensar en JSON como una buena alternativa para cuando XML o serialización Java parece "pesado".
Echa un vistazo a este punto de referencia. Kryo es el que estoy usando. Es compatible con la creación de la serialización binaria personalizada, que se puede hacer de una manera adecuada tanto para Dalvik como para JSE.
Es posible que desee ver una pregunta relacionada , que proporciona una discusión adicional y enlaces.
Protocol buffers sería un buen formato sobre el cable a considerar.
No puedo hablar de la serialización de Dalvik.
- ¿Cómo tener igual tamaño de ancho y altura usando layout_weight?
- Android Studio 2.1 No se puede resolver el símbolo 'R'