Я ответил на несколько похожий вопрос здесь . В этом ответе есть ссылка на презентацию, которую проводит Марк Брэйди на droidconf в Берлине. В своих слайдах он описывает структуру, которая управляет такими вещами. Он также предлагает источник для этого на github .
Он предлагает следующее решение. Создайте объект контроллера, который находится в области пользовательского класса приложения. Контроллер запускает службу или простой рабочий поток и уведомляет пользовательский интерфейс, если служба получает уведомление о том, что что-то изменилось. Он советует не использовать AIDL, если это не является абсолютно необходимым.
Документация по Android также предлагает пример о том, как запустить локальный процесс.