I have experience with Windows, the MacOS, the iPad and Linux UI's like KDE. I have not used an Android device however so I do not really understand how it works and compares. My general understanding is that it is similar to Gnome-like Linux interfaces, but I guess there must be some differences since Android has a layer of Java, the Dalvik/ART virtual machine, between the Linux kernel and the UI elements.

I have read the Android developer overview to the UI but that has not really helped me understand how the UI operates from a workflow basis.

Obviously I could just buy an Android tablet and use it for a few months, but I am hoping there is some way for me to understand the Android UI and how it differs from other major UIs. How can I get this knowledge?


2 Answers 2


On Linux OSes kernel starts init which starts getty which starts login process on virtual console(s). There a user can login on CLI and a shell (like bash) is opened for command execution. In windowing system, init starts a Display Server like Xorg or Wayland and login is replaced with a graphical Display Manager like SDDM or GDM which asks for user credential on GUI. After authentication a Desktop Environment e.g. KDE or GNOME is started which starts its Window Manager and shows components like Desktop, Task Bar / Panel, Widgets, Notifications, and windows of applications such as a File Explorer, Web Browser, Terminal Emulator etc.

Android is primarily designed for a single user, so there's no concept of CLI login. In fact virtual terminals/consoles are disabled in kernel by default. init - after starting all native services including Surface Flinger (Android's Display Server) - starts a service named zygote which is a special process to fork Java-like Virtual Machines. Android's core framework (system_server) and all apps run in separate instances of VMs. system_server starts apps which are configured to run on boot, including many system apps.

So what we see after the boot animation ends is System UI app. This app is responsible for showing lock screen, status bar, notifications etc. system_server has 100+ Java services running inside it including Activity Manager, Permissions Manager and Window Manager. WM communicates with Surface Flinger to draw surfaces on screen as requested by system_server and apps. Another core component we see is a Home or Launcher app which is somewhat like a Desktop. It shows, at least, icons of all installed apps and forwards the request to system_server for launching/showing the app when we tap an app icon. So everything we see on an Android device is an app.


Only by using Android device.

If you don't want to buy a tablet or phone, just install Android emulator like Genymotion, Bluestacks or a classic emulator from Android SDK, but none of these would give you the great experience as using and playing with real device.

You can also watch many tutorials like Android Development for Beginners which provides you a some useful information, but no direct experience

I'm saying this not only as a Android fan, but also as experienced Android Developer

You must log in to answer this question.