Funciona de manera muy similar a como las aplicaciones de un usuario están aisladas unas de otras. Mientras que los datos privados de las aplicaciones solían ser almacenados en /data/data
ahora está almacenado en /data/users/_n_
donde n es la identificación del perfil de usuario. Cada usuario obtiene su propio directorio, y cada aplicación que utiliza obtiene un directorio dentro de ese. Los permisos del sistema de archivos POSIX protegen los directorios de datos, no sólo de otras aplicaciones, sino también de otros usuarios.
Dado que Android utiliza el proceso POSIX existente, el UID y el mecanismo de seguridad del sistema de archivos, de la misma manera que lo hace para diferentes aplicaciones, la implementación ya es segura sin necesidad de nada especial a nivel del sistema operativo, o de una solución más complicada (y por lo tanto, con un alto consumo de batería) como la virtualización. La virtualización funcionaría mal para esto de todos modos: proporcionar un acceso virtualizado a la red, Bluetooth, hardware NFC, etc. de tal manera que todos los usuarios puedan controlarlo añadiría mucha complejidad innecesaria a las pilas de controladores.
Cuando ambos usuarios ejecutan la misma aplicación (como el lanzador), en realidad hay dos instancias de esa aplicación. Comparten un archivo APK, pero tienen dos procesos separados que se ejecutan bajo diferentes ID de usuario POSIX, y cada uno busca en su propio directorio de datos. De esta manera, nada de lo que puedan escribir se comparte entre los dos usuarios, pero las partes de sólo lectura (como el código ejecutable de la aplicación del archivo APK) se comparten, reduciendo el uso de la RAM y el almacenamiento. Ambas instancias pueden estar ejecutándose a la vez, y el cambio de usuario sólo cambia cuál es la aplicación en primer plano en la pantalla. No es necesario recargar o reiniciar nada.
Esto funciona de la misma manera tanto si la aplicación es una incorporada, o una instalada por el usuario. Hay un incómodo efecto secundario: cuando un usuario actualiza una aplicación, la actualización afecta a todos los usuarios, incluso si la nueva versión necesita más permisos.
Sólo las aplicaciones con el permiso de INTERACT_ACROSS_USERS son especiales. Estas aplicaciones tienen acceso a las APIs dentro del marco de Android para ver todos los directorios de datos de los usuarios a la vez. La pantalla de bloqueo es un ejemplo de este tipo de aplicaciones: en una instancia, necesita ser capaz de leer la configuración y la foto de perfil de cada usuario, para mostrar la interfaz gráfica de usuario "switch users".