Держите службу в фоновом режиме, не показывая уведомления

Я разрабатываю приложение для обмена сообщениями, и мне нужно, чтобы моя служба продолжала работать в фоновом режиме, даже если приложение было закрыто, но не отображало уведомление на панели навигации и запускалось при запуске телефона и перезапускалось, когда он закрыт по какой-либо причине, я знаю, что этот вопрос задавался раньше, но я не могу найти ничего, чтобы сделать это, я просто хочу, чтобы это было похоже на услуги WhatsApp, Facebook или bbm, заранее спасибо.


person Kareem Essam Gaber    schedule 31.01.2015    source источник


Ответы (1)


Мне нужно, чтобы моя служба продолжала работать в фоновом режиме, даже если приложение было закрыто, но без отображения уведомления на панели навигации и запускалось при запуске телефона и перезапускалось, когда оно было закрыто по какой-либо причине.

Это не совсем возможно.

Вы можете вернуть START_STICKY или START_REDELIVER_INTENT из метода onStartCommand() вашего сервиса. Android по-прежнему будет время от времени завершать ваш процесс из-за устаревания и нехватки памяти, но в конечном итоге Android перезапустит эти службы. Какой процент времени будет работать ваш процесс, будет зависеть от множества факторов, не последним из которых является объем системной оперативной памяти на устройстве Android.

Более того, вы можете использовать Google Cloud Messaging (GCM) для доставки ваших сообщений в ваше приложение. Таким образом, вам не нужно, чтобы служба работала все время. Ваше приложение может получить контроль над получением сообщения, выполнить некоторую работу для этого сообщения, а затем уйти.

Я просто хочу, чтобы это было похоже на услуги WhatsApp, Facebook или bbm.

BlackBerry Messenger использует startForeground() и в результате имеет значок в строке состояния.

person CommonsWare    schedule 31.01.2015
comment
мое приложение - это приложение для обмена мгновенными сообщениями, и мне нужно запускать эту службу в фоновом режиме, поскольку она обрабатывает так много вещей, а не только сообщения, которые получает пользователь, и я не хочу никаких ограничений на количество сообщений, которые я отправляю, поскольку я слышал, что GCM отправляет только 1000 запросов в день, я также знаю, что bbm использует уведомление переднего плана, но у него есть возможность сделать так, чтобы оно исчезло также в настройках приложения - person Kareem Essam Gaber; 31.01.2015
comment
@KareemEssamGaber: как я слышал, GCM отправляет только 1000 запросов в день - это неверно. он обрабатывает так много вещей, а не только сообщения, которые получает пользователь — вы можете верить во что хотите. Я не могу придумать веской причины иметь постоянно работающую службу для приложения для обмена мгновенными сообщениями, если это приложение использует GCM для входящих сообщений. - person CommonsWare; 31.01.2015
comment
Я ценю помощь, но я не знаю, как использовать GCM. Я пытался прочитать документацию Google и множество руководств о том, как запрограммировать мой сервер для отправки, получения и обработки запросов с помощью GCM, но я до сих пор не знаю, как это сделать, Есть ли у вас какие-либо предложения по простому и эффективному учебнику для крупных игроков? - person Kareem Essam Gaber; 31.01.2015
comment
@KareemEssamGaber: в последнее время я не искал учебник по GCM. - person CommonsWare; 31.01.2015