Каков наилучший способ справиться с услугой, которая должна жить вечно? Или есть лучший способ сделать это - PullRequest
2 голосов
/ 12 ноября 2009

У меня есть действие, которое ищет телефонные номера, введенные из пользовательского интерфейса, из локальной базы данных sqlite, которая показывает исходный город / штат номера. Часть деятельности также состоит из службы, которая прослушивает входящие и исходящие вызовы на телефоне. При совершении вызова или входящем вызове в нижней части экрана отображается сообщение Toast с указанием города / штата этого номера из базы данных. Насколько я знаю, невозможно достичь этой функциональности, не заставив сервис жить вечно. Сейчас у меня есть настройка будильника, которая запускается каждый час и перезапускает службу, если она была убита. Я помню старое приложение, которое работало таким образом, называемое «пропущенный вызов», которое меняло цвет индикатора уведомления в зависимости от полученного сообщения (пропущенный вызов, смс, электронная почта и т. Д.). У меня вопрос, есть ли лучший способ сделать это? Я знаю, что постоянное обслуживание сервисов крайне неодобрительно, но я не вижу другого способа, если я что-то упустил.

Спасибо!

1 Ответ

0 голосов
/ 13 ноября 2009

То, что вы описали в своем комментарии к Эвану выше, это именно то, как я это сделал в своем собственном приложении, которое прослушивало входящие и исходящие вызовы (небольшое приложение под названием MinuteWatch, которое никто не купил).

Нет широковещательных намерений для входящих вызовов, так как еще вы должны это сделать? Я полагаю, это так, что вы не можете откладывать или иным образом связываться с входящими звонками, потому что они чрезвычайно важны, но я думаю, что это обрекает вас на бесконечное обслуживание. Это единственное, о чем я могу подумать, это что-то, что невозможно подключить. Даже такие вещи, как проверка твитов каждые 15 минут, вы можете сделать это с помощью повторяющегося сигнала тревоги, и сервис не будет зависать.

Даже если команда Android не хочет событие INCOMING_CALL, я думаю, что им следует рассмотреть возможность добавления в эфир Intents с именами CALL_RECEIVED и CALL_ENDED и CALL_HELD, которые по крайней мере уведомят вас сразу после факта. Как еще вы должны создать альтернативный инструмент журнала вызовов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...