Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 276
#1

Запущенный service не работает, когда нет процесса - Android

18.05.2016, 23:57. Просмотров 80. Ответов 14
Метки нет (Все метки)

Запускаю сервис в startForeground() он работает, в работающих приложениях у меня показано активны 1н процесс и 1н сервис (мой).
Но когда "клинером" чищу оперативку он убивает процесс (процессов 0 сервис 1).
И сервис перестает выполнять задачу (раз в 5 сек показывать сообщение).

Это нормально? Что можно с этим сделать, типа оживить процесс или как то отделить сервис от процесса чтобы он дальше выполнялся?
Прошу помочь или объяснить что происходит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3062 / 1864 / 196
Регистрация: 13.01.2012
Сообщений: 7,087
19.05.2016, 18:20     Запущенный service не работает, когда нет процесса #2
powowstal, при создании сервиса вызывается функция возвращаемое значение которой говорит системе о том что делать если сервис упал или был остановлен системой - одна из констант заставляет систему перезапускать сервис в таких случаях. Названия функции не помню может старт. Если вы сами через вызов остановите сервис система не будет его поднимать до тех пор пока кто-нибудь не сделает этого явно - например обратится к нему.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
19.05.2016, 20:09     Запущенный service не работает, когда нет процесса #3
return START_STICKY;
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 276
20.05.2016, 01:02  [ТС]     Запущенный service не работает, когда нет процесса #4
YuraAAA, да этот флаг работает но киткат думает иначе, на некоторых сборках сервис не возобновляется

Добавлено через 5 минут
vxg,
Цитата Сообщение от vxg Посмотреть сообщение
например обратится к нему
я так понимаю открыть приложение и явно запустить сервис? Но мне нужно не открывая приложения запустить сервис (например с входящим звонком запустить сервис и что бы он произвел действие)
vxg
Модератор
3062 / 1864 / 196
Регистрация: 13.01.2012
Сообщений: 7,087
20.05.2016, 06:33     Запущенный service не работает, когда нет процесса #5
powowstal, создайте нужные ресиверы и в них создавайте сервис. Можете у невозобновления есть иная причина?
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 276
20.05.2016, 10:57  [ТС]     Запущенный service не работает, когда нет процесса #6
vxg,
Цитата Сообщение от vxg Посмотреть сообщение
создайте нужные ресиверы и в них создавайте сервис
может в сервисе ресивер или можно в ресиверах сервис?

Цитата Сообщение от vxg Посмотреть сообщение
Можете у невозобновления есть иная причина?
причина "клинер" эта падла грохает всех и вся кроме работающего ресивера пришлось ставить ресивер в без конечный цикл с паузой на сон не больше 5 сек, а то клинер его находит и убивает вместе с сервисами
vxg
Модератор
3062 / 1864 / 196
Регистрация: 13.01.2012
Сообщений: 7,087
20.05.2016, 11:03     Запущенный service не работает, когда нет процесса #7
Цитата Сообщение от powowstal Посмотреть сообщение
может в сервисе ресивер или можно в ресиверах сервис?
ресивер это такая "пимпочка" которую вызывает система когда происходит соответствующее ресиверу событие например запуск телефона, включение экрана или телефонный звонок (не пробовал). вы можете объявить его в манифесте или добавить во время работы. если он в манифесте то когда наступит событие система разыщет ваш ресивер и стартует его даже если приложение не запущено. если добавлено во время работы то естественно будет работать пока работает приложение. ну а в ресивере вы можете запустить ваш сервис если это требует ваша задача
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 276
23.05.2016, 19:55  [ТС]     Запущенный service не работает, когда нет процесса #8
vxg, проблема в том что любой"клинер" (когда выполняет освобождение памяти) снимает регистрацию ресивера и он больше не работает, есть какие то мысли что бы избежать такого действия?
vxg
Модератор
3062 / 1864 / 196
Регистрация: 13.01.2012
Сообщений: 7,087
23.05.2016, 21:15     Запущенный service не работает, когда нет процесса #9
Цитата Сообщение от powowstal Посмотреть сообщение
снимает регистрацию ресивера
если ресивер в манифесте его нельзя снять. воткните в манифест к примеру ресивер события загрузки и как бы клинер не лез из кожи вон но при перезапуске система поднимет сервис. конечно вам нужно что бы это произошло как можно быстрее. можно посоветовать "минировать" систему алармами которые поднимают сервис - если клинер шлепнул сервис то через 5 минут сработает аларм который его поднимет и установит следующий аларм. если аларм видет что сервис живой то просто ставит следующий аларм через 5 минут и так далее. кроче вариантов масса.
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 276
23.05.2016, 21:53  [ТС]     Запущенный service не работает, когда нет процесса #10
vxg, Ресивер на звонок прописан в манифесте и он снимается "клинером".
Да я так бы и сделал аларм если не нужна была 100% гарантия что приложение отреагирует на событие в не зависимости использовался ли "клинер".
Я уже нашел выход - создал 2 сервиса и ресивер, сервис1 запускает ресивер, ресивер сервис 2, а сервис 2 запускает сервис 1 и на ресивере слип на 2 секунды (если слип на сервисе он тихо уничтожается). Вышел такой себе цыкл круговой опеки.
Но я понимаю что это ерунда какая то вот думал может кто что подскажет.
vxg
Модератор
3062 / 1864 / 196
Регистрация: 13.01.2012
Сообщений: 7,087
24.05.2016, 06:40     Запущенный service не работает, когда нет процесса #11
powowstal, ресивер на звонок можно вписать в манифест?
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 276
24.05.2016, 13:55  [ТС]     Запущенный service не работает, когда нет процесса #12
vxg, легко
Цитата Сообщение от YuraAAA Посмотреть сообщение
XML
1
2
3
4
5
<receiver android:name=".IncomingCall">  
                         <intent-filter>
                         <action android:name="android.intent.action.PHONE_STATE" />
                         </intent-filter>
                          </receiver>
vxg
Модератор
3062 / 1864 / 196
Регистрация: 13.01.2012
Сообщений: 7,087
24.05.2016, 13:59     Запущенный service не работает, когда нет процесса #13
powowstal, теперь вам не страшен клинер
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 276
24.05.2016, 16:00  [ТС]     Запущенный service не работает, когда нет процесса #14
vxg, как раз на оборот, "клинер" спокойно снимает зарегистрированный ресивер и программа перестает реагировать на звонки...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2016, 16:09     Запущенный service не работает, когда нет процесса
Еще ссылки по теме:

Android Одно приложение вконтакте работает, а второе нет
Не выводится Диалог, когда нет интернет подключения Android
Остановить поток запущенный внутри onRefresh() Android
Android Загрузка картинок Picasso из дискового кэша, когда нет интернета
Работа с Service Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
vxg
Модератор
3062 / 1864 / 196
Регистрация: 13.01.2012
Сообщений: 7,087
24.05.2016, 16:09     Запущенный service не работает, когда нет процесса #15
я в шоке... возможно ли это... YuraAAA, что вы думаете по этому поводу?
Yandex
Объявления
24.05.2016, 16:09     Запущенный service не работает, когда нет процесса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru