My concern is that this is not a common case, and yet we're starting the service and running a DB query every single time a ConversationActivity is started.

Sounds like maybe we should have PromptApnActivity be the sole place for edits to the APN settings, and kick off this intent from there?

If that doesn't seem workable, then it seems like kicking off this intent both from PromptApnActivity and from a setting change listener in the PreferenceActivity would make the most sense.