Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не запускается сервис в режиме ожидания 
:(
    Опции темы
McBlob
Дата 14.2.2012, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 23.11.2011

Репутация: нет
Всего: нет



Написал приложение с сервисом. Сервис работает нормально.
Если таск киллером убить приложения, с ними вместе убивается и сервис, но через несколько секунд запускается заново системой.

Проблема в том, что если сразу после "убийства" перевести в режим ожидания (экран выключен), то сервис запустится только когда телефон перейдёт обратно в активный режим.
PM MAIL   Вверх
PiyodaiSiyo
Дата 19.2.2012, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



а если просто из экземпляра Activity звать  someSrvc.stopService() в егошнем onStop()?
 да и экран можно оставлять вкл.
после вызова super.onCreate(). 
звать
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
[а если звонок-смс там же запускать в onResume() someSrvc.startService()]

Это сообщение отредактировал(а) PiyodaiSiyo - 19.2.2012, 09:01
PM MAIL   Вверх
McBlob
Дата 19.2.2012, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 23.11.2011

Репутация: нет
Всего: нет



Наверное не совсем правильно вопрос задал.

Если пользователь убивает службу, например таск киллером, то через некоторое время система эту службу автоматически перезапустит.
Проблема в том, что если убить службу и сразу выключить экран телефона, то система запустит службу только после того как экран включится.

Соответственно никаких активитей нету чтобы службу запустить.
PM MAIL   Вверх
PiyodaiSiyo
Дата 19.2.2012, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



Ваш таск киллер по всей видимости это скомпилировання прога.
если служба пишется вами:
"If a component starts the service by calling startService() (which results in a call to onStartCommand()), then the service remains running until it stops itself with stopSelf() or another component stops it by calling stopService()."
Можно проследить выполняется ли onDestroy() службы перекрыв его  и дать вам знать. И если да значит ваш сервис "умирает" но запускается из-за Intenta в манифесте.надо там поправить кое что что запускает его постоянно(в доках где то есть)

если сторонняя-- незнаю(видимо там хитрости с Intent ами, что служба перезапускается)

Это сообщение отредактировал(а) PiyodaiSiyo - 19.2.2012, 10:16
PM MAIL   Вверх
McBlob
Дата 19.2.2012, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 23.11.2011

Репутация: нет
Всего: нет



Таск киллер стандартный MIUI. Сервис мой. onDestroy не выполняется, а когда система перезапускает сервис сама, то выполняется только onCreate()
Собсна система то сервис перезапускает, но только когда телефон активен (экран включён)
PM MAIL   Вверх
PiyodaiSiyo
Дата 19.2.2012, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



onDestroy()
The system calls this method when the service is no longer used and is being destroyed. Your service should implement this to clean up any resources such as threads, registered listeners, receivers, etc. This is the last call the service receives.

стало быть вы неправильно организовали уничтожение копонента(в данном случае сервис(служба))
и надо добиться чтоб этот медод вызывался
 
или ваш миуи просто вызывает onUnbind(...)(попробуйте вызвать оттуда stopSelf())

или же сушествуе какойто компонент (сервис ,активити который запускает последний но при "умирании" забывает вызвать someSrvc.stopService() вот он и висит
(не забывайте вызывать везде super() при перекрытии)

даже может быть что там вызываются копии этого сервиса(а то чего это onCreate(... ) каждый раз зовет)

Это сообщение отредактировал(а) PiyodaiSiyo - 19.2.2012, 14:50
PM MAIL   Вверх
McBlob
Дата 20.2.2012, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 23.11.2011

Репутация: нет
Всего: нет



Мне кажется, что возникло недопонимание.

Есть моя программа в которой есть активити и мой же сервис. Активити запускает сервис вызовом startService() и закрывается finish(). Сервис при этом продолжает работать (собсна в этом и есть смысл сервиса - работать без активити).

Под Андройд есть куча программок - таск киллеров которые убивают программы и сервисы висящие в памяти. Я ими не пользуюсь так как в MIUI (это сборка андройда) есть свой встроенный киллер, типа как в сенсе.

Проблема заключается в том, что если убить процессы киллером и сразу выключить экран телефона, то мой сервис не перезапускается, хотя другие перезапускаются. Если же экран не выключать, то всё отлично перезапускается.

super пишу во всех перегружаемых методах. Интересно то, что когда сервис запускаю я, вызывая startService(), то у сервиса отрабатывает сначала onCreate(), а потом onCommandStart(), а когда сервис перезапускает система, то onCommandStart() не отрабатывает.

Цель всего этого - сервис должен работать постоянно пока я сам его не остановлю вызвав stopService();
PM MAIL   Вверх
PiyodaiSiyo
Дата 21.2.2012, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



гляньте в сторону onConfigChanged(Config cf)где  любыеизменения-рестарты можно прописать в блоке if(cf.uiMode==Config.UI_UNDEFINED){...}
где cf это ваша  новая конфигурация экрана переданная системой кодеру.Config.XXXX-маски.
PM MAIL   Вверх
McBlob
Дата 21.2.2012, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 23.11.2011

Репутация: нет
Всего: нет



Так а кто будет обрабатывать onConfigChanged(Config cf), если на момент выключения экрана служба не работает (она  жестоко убита таск киллером smile )?

Мне кажется, что тут надо её как то хитро запускать, типа как системную что ли... Чтоб она в любом случае перезапускалась системой, либо вообще её нельзя было прибить.
PM MAIL   Вверх
PiyodaiSiyo
Дата 21.2.2012, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



 Сервис мой. onDestroy не выполняется
Стоп стоп если этот дестрой не  отработал (вызывается гдето внутри finish()),ваша активити ЖИВА .попробуйте убить в еешней onStop сервис и в onResume стартовать его.Кроме того у него если не выгорит на крайняк есть свой онкофигчейнжд(не рекомендуется).Е сли долго долбить желаемая дырка п оявиться
PM MAIL   Вверх
McBlob
Дата 22.2.2012, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 23.11.2011

Репутация: нет
Всего: нет



А при чём тут активити и его finish()? Сервис должен работать независимо от того жива активити или нет. Если я сам останавливаю сервис при помощи Activity.stopService(), то Service.onDestriy() отлично отрабатывает. Он не отрабатывает когда я чищу память таск киллером (видать он не вызывает stopService(), а как то жестоко убивает всё, что в памяти).

В любом случае следующей строчкой после this.startService(intent) у меня идёт this.finish();
PM MAIL   Вверх
PiyodaiSiyo
Дата 22.2.2012, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



я имею в виду что когда миуи стопает ваш сервис  его перезапускает активити (которая  оказывается не убита не смотря на вызываемый финиш[так частенько случается если не остановленны некоторые треды или прослушка сенсоров]).А если стопает и + операция с экраном--она не перезапускает(живая активити) етот сервис.поэтому я и предполагаю что надо общаться с онрезьюмом  принадлежащим  активити.  ну кась проведите трассировку этого метода.
PM MAIL   Вверх
McBlob
Дата 24.2.2012, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 23.11.2011

Репутация: нет
Всего: нет



А с чего это вдруг активити должна перезапускать сервис, если бы даже она была жива? 
Активити запускает сервис только по нажатию кнопки (у меня так сделано). Ну и никаких тредов и прослушки сенсоров нету. Актовити только читает/пишет настройки в файл и запускает/останавливает службу.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0891 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.