Cela fonctionne de manière très similaire à la façon dont les applications d'un utilisateur sont isolées les unes des autres. Alors qu'auparavant les données privées des applications étaient stockées dans /data/data
maintenant, il est stocké dans /data/users/_n_
où n est l'ID du profil de l'utilisateur. Chaque utilisateur obtient son propre répertoire, et chaque application qu'il utilise obtient un répertoire à l'intérieur de celui-ci. Les permissions du système de fichiers POSIX protègent les répertoires de données, non seulement des autres applications, mais aussi des autres utilisateurs.
Étant donné qu'Android utilise le mécanisme de sécurité POSIX existant pour les processus, les UID et les systèmes de fichiers, de la même manière que pour les différentes applications, la mise en œuvre est déjà sécurisée sans qu'il soit nécessaire de recourir à un système d'exploitation spécial ou à une solution plus complexe (et donc gourmande en batterie) telle que la virtualisation. De toute façon, la virtualisation fonctionnerait mal dans ce cas : fournir un accès virtualisé au réseau, au Bluetooth, au matériel NFC, etc. de telle sorte que tous les utilisateurs puissent le contrôler ajouterait beaucoup de complexité inutile aux piles de pilotes.
Lorsque les deux utilisateurs exécutent la même application (comme le lanceur), il y a en fait deux instances de cette application. Elles partagent un fichier APK, mais elles ont deux processus distincts qui s'exécutent sous des identifiants POSIX différents, et elles cherchent chacune dans leur propre répertoire de données. Ainsi, rien de ce qu'ils pourraient écrire n'est partagé entre les deux utilisateurs, mais les parties en lecture seule (comme le code exécutable de l'application à partir du fichier APK) sont partagées, ce qui réduit l'utilisation de la RAM et du stockage. Les deux instances peuvent être exécutées en même temps, et le changement d'utilisateur modifie simplement l'application au premier plan sur l'écran. Rien ne doit être rechargé ou redémarré.
Cela fonctionne de la même manière, que l'application soit intégrée ou installée par l'utilisateur. Il y a un effet secondaire gênant : lorsqu'un utilisateur met à jour une application, la mise à jour affecte tous les utilisateurs, même si la nouvelle version nécessite plus d'autorisations.
Seules les applications disposant de la permission INTERACT_ACROSS_USERS sont spéciales. Ces applications ont accès aux API du cadre Android pour consulter les répertoires de données de tous les utilisateurs en même temps. L'écran de verrouillage est un exemple de ce type d'application : dans un cas, il doit pouvoir lire les paramètres et la photo de profil de chaque utilisateur, afin d'afficher l'interface graphique "changer d'utilisateur".