Pocket Home
Pocket Home is a launcher I wrote for the Kyocera KY-01L, a card-sized phone with a 480 x 600 e-ink screen. Its stock launcher will not list or start third-party apps, so a phone running Android could only ever run what shipped on it.
Drag to turn the device. The screen is a capture from the launcher running on the physical KY-01L, not a mock-up.
The starting point
The device runs Android, but nothing you install appears on its home screen or can be started from it, so the platform underneath goes to waste. Replacing the launcher is not simply a matter of writing an ordinary one either: the panel is e-ink at 480 x 600 and the firmware is Android 7.1, so a scrolling colour-phone layout does not fit it.
My contribution
A native Java launcher in a 24 KiB APK, with no runtime libraries, no WebView and no network permission. Favourites and a paged app list of six per page with explicit previous and next instead of scrolling; long press to rename an app, choose one of sixteen monochrome icons, or add a favourite; a light or dark tone. Preferences are keyed by component name, so they survive a process restart and an in-place update.
A key decision
Refuse anything that redraws without being asked. Clock and battery update from broadcasts only while the launcher is resumed, the receiver is unregistered on pause, and the app list refreshes on resume rather than continuously. On e-ink an idle animation is not decoration, it is visible flicker.
What came out of it
Running as the default home screen on my own device and verified against it: build and signature, the HOME resolver, icon and favourite persistence across a force stop, all three app pages, and both 240 and 280 density. One memory snapshot read 11.5 MB PSS, which is a reading rather than a benchmark. E-ink ghosting and touch feel need physical inspection; a screenshot cannot establish either.