So far, I'm experimenting with a static live data object and a shared prefs listener. I think I'm going to stick with the shared prefs so the data will persist if the app is killed. I have an alarm that runs every 20 minutes, asks a server for status, then requests the server to send it an SMS. a different receiver listens for the SMS and tells the server if it receives it. The UI just needs to know the last event that fired, especially if there's an error, as well as read an sqlite table that contains all the preceding events and statuses.