Red de conocimiento informático - Computadora portátil - AndroidAsync

AndroidAsync

AndroidAsync encapsula solicitudes asincrónicas de uso común, como obtener cadenas, obtener JSON, obtener archivos, etc. Admite el almacenamiento en caché y también puede crear sockets web. Es potente y fácil de usar. He estado estudiando este marco recientemente, así que escribí algunas notas.

Página de inicio oficial de AndroidAsync

AndroidAsync es una biblioteca de protocolos de red subyacente. Si está buscando una biblioteca de solicitudes http de alto nivel y fácil de usar para software de Android, consulte la biblioteca Ion (que está construida sobre AndroidAsync). Los desarrolladores de Android estándar pueden estar más interesados ​​en Ion.

Pero si está buscando un socket local, un cliente/servidor http, WebSocket y sockets, entonces la biblioteca de flujo IO de Android, AndroidAsync, es lo que está buscando.

okhttp no proporciona un selector de nio, pero nio es más adecuado para una gran cantidad de conexiones.

Una breve descripción general del contenido

Java IO está orientado a la secuencia, lo que significa que lee uno o más bytes de la secuencia a la vez hasta que se hayan leído todas las palabras. no están almacenados en caché en ninguna parte. Además, no puede mover datos hacia adelante y hacia atrás dentro de la transmisión. Si necesita mover datos leídos de la secuencia de un lado a otro, primero debe almacenarlos en caché en un búfer. El enfoque de Java NIO para la orientación del búfer es ligeramente diferente. Los datos se leen en un búfer y luego se procesan, moviéndose hacia adelante y hacia atrás en el búfer según sea necesario. Esto aumenta la flexibilidad de procesamiento. Sin embargo, también debe verificar que el búfer contenga todos los datos que deben procesarse. También asegúrese de que cuando lea más datos en el búfer, no sobrescriba ningún dato en el búfer que aún no se haya procesado.

Todos los flujos de IO de Java están bloqueados. Esto significa que cuando un hilo llama a read() o write(), el hilo se bloqueará hasta que se lean algunos datos o se escriban por completo. Durante este tiempo, el hilo no puede hacer nada más. El modo sin bloqueo de Java NIO hace que un subproceso envíe una solicitud para leer datos del canal, pero solo puede obtener los datos que están disponibles actualmente y, si no hay datos disponibles actualmente, no obtendrá nada. En cambio, mantiene el hilo bloqueado para que pueda continuar haciendo otras cosas hasta que los datos sean legibles. Lo mismo ocurre con las escrituras sin bloqueo. El hilo solicita escribir algunos datos en un canal, pero mientras tanto, el hilo puede hacer otras cosas en lugar de esperar a que los datos se escriban por completo. Los subprocesos normalmente aprovechan el tiempo de inactividad en IO sin bloqueo para realizar operaciones de IO en otros canales, por lo que un solo subproceso ahora puede administrar múltiples canales de entrada y salida.

El selector de Java NIO permite que un solo hilo monitoree múltiples canales de entrada. Puede registrar varios canales para usar un selector y luego usar un hilo separado para "seleccionar" canales que ya tienen entradas para procesar. Puede registrar varios canales para usar un selector y luego usar un hilo separado para "seleccionar" canales que ya tienen entradas para procesar o que están listos para escribir. Este mecanismo de selección permite que un solo hilo administre fácilmente múltiples canales.