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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
#1

Перезапуск службы - Программирование Android

20.02.2013, 21:14. Просмотров 1910. Ответов 14
Метки нет (Все метки)

У меня служба, которая запускается и которая не должна останавливаться.
Глобальный BroadcastReceiver получает сообщения и запускает службу методом startService.
Если при повторном запуске служба создана, то она не должна создаваться заново, а должен
произойти лишь вызов onStartCommand.

Но в методе onCreate периодически выскакивает отладочное сообщение, которое говорит, что служба пересоздается.
В результате нарушается логика работы программы.
из onStartCommand возвращал и START_STICKY и START_REDELIVER_INTENT. Ничего не помогает.

Почему происходит пересоздание службы ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2013, 21:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перезапуск службы (Программирование Android):

Перезапуск animatedvectordrawable - Программирование Android
Добрый день. Пытаюсь сделать так чтобы animatedVectorDrawable постоянно перезапускался автоматически. вот код самой анимации ...

Перезапуск проектов - Программирование Android
Нажимаю первый раз на кнопочку старта (сборки и запуска проекта), вылазит окошко, загружается андройд, открывается приложение. что то...

Перезапуск таймера - Программирование Android
Странное поведение таймера. Если он отрабатывает, то в методе run() я посылаю некое событие. Если же я хочу прервать его работу, то...

Обновление/перезапуск layout по нажатию - Программирование Android
необходимо, чтобы по нажатию обновлялся/перезапускался layout. как организовать?

Перезапуск сервиса после task killer - Программирование Android
Здравствуйте, подскажите пожалуйста, как сделать, что бы сервис перезапускался после того, как пользователь очищает список недавно открытых...

Перезапуск приложения после вкл/выкл разрешения на Marshmallow - Программирование Android
Добрый день! Подскажите пожалуйста, может кто сталкивался. Запускаешь приложение, заходишь максимально далеко по экранам (ну или...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 03:24 #2
Тоже интересно
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
21.02.2013, 12:28  [ТС] #3
Самое интересное, что не вижу под отладкой никаких исключений, не вижу нехватку памяти,
что и должно приводить к остановке службы. А самое интересное, что не вижу остановки службы.

Просто заново создается. Причем с завидной периодичностью.

Добавлено через 5 часов 34 минуты
Забыл еще сказать, что перед каждым пересоздание службы приходит сообщение
02-21 12:25:07.280: V/WifiProgressStore(3749): WifiProgressStore Created
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 15:05 #4
Всё дело в том что Service имеет доступ к UI и не может выполнятся вечно типа while(true)
Если нужно чтобы сервис постоянно что-то делал типа while(true) - нужно использовать IntentService и в doInBackground помещать while(true)
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
21.02.2013, 15:07  [ТС] #5
В общем я понял в чем дело.
MediaRecorder при записи валит службу.
Если MediaRecorder полностью подготовить к записи, но не запускать, то все работает.
Но как только вызываю start, то служба перезапускается.

Почему ?

Пишет 02-21 15:00:39.044: I/dalvikvm(3755): Wrote stack traces to '/data/anr/traces.txt'
Но как его посмотреть?

И еще: 02-21 14:59:04.674: I/dalvikvm(3735): threadid=3: reacting to signal 3
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 15:08 #6
кстати, onStartCommand вообще появился в API 5 (ос 2.0)
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
21.02.2013, 15:09  [ТС] #7
что-то я не нашел doInBackground
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 15:17 #8
сорри, не doInBackground а onHandleIntent
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
21.02.2013, 15:31  [ТС] #9
а как посмотреть /data/anr/traces.txt'
Что-то DDMS не пускает в папку

Добавлено через 13 минут
нашел.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
----- pid 3303 at 2013-02-21 15:14:56 -----
Cmd line: com.svox.pico
 
DALVIK THREADS:
"main" prio=5 tid=1 WAIT
  | group="main" sCount=1 dsCount=0 s=N obj=0x4001d8b0 self=0xcd28
  | sysTid=3303 nice=0 sched=0/0 cgrp=bg_non_interactive handle=-1345021904
  | schedstat=( 398834853 6195048924 162 )
  at java.lang.Object.wait(Native Method)
  - waiting on <0x45db1cd0> (a android.os.MessageQueue)
  at java.lang.Object.wait(Object.java:288)
  at android.os.MessageQueue.next(MessageQueue.java:146)
  at android.os.Looper.loop(Looper.java:110)
  at android.app.ActivityThread.main(ActivityThread.java:4627)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:521)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  at dalvik.system.NativeStart.main(Native Method)
 
"Binder Thread #2" prio=5 tid=5 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x45dae538 self=0x12d968
  | sysTid=3307 nice=0 sched=0/0 cgrp=default handle=2044280
  | schedstat=( 8800630 29764023 25 )
  at dalvik.system.NativeStart.run(Native Method)
 
"Binder Thread #1" prio=5 tid=4 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x45dad010 self=0x12f6a0
  | sysTid=3306 nice=0 sched=0/0 cgrp=bg_non_interactive handle=1375104
  | schedstat=( 14922338 42326757 23 )
  at dalvik.system.NativeStart.run(Native Method)
 
"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
  | group="system" sCount=0 dsCount=0 s=N obj=0x45dab1e8 self=0x1291a0
  | sysTid=3305 nice=0 sched=0/0 cgrp=bg_non_interactive handle=1319056
  | schedstat=( 192906175 1185104415 61 )
  at dalvik.system.NativeStart.run(Native Method)
 
"HeapWorker" daemon prio=5 tid=2 VMWAIT
  | group="system" sCount=1 dsCount=0 s=N obj=0x43f19ec0 self=0x123340
  | sysTid=3304 nice=0 sched=0/0 cgrp=bg_non_interactive handle=1196880
  | schedstat=( 55567087 267398654 37 )
  at dalvik.system.NativeStart.run(Native Method)
 
----- end 3303 -----
И что это означает ?
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
21.02.2013, 17:52 #10
это весь файл?
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
21.02.2013, 19:43  [ТС] #11
Цитата Сообщение от YAUHEN Посмотреть сообщение
это весь файл?
нет - последняя запись
lavan
52 / 52 / 1
Регистрация: 21.03.2009
Сообщений: 371
21.02.2013, 22:48 #12

Не по теме:

не хочу плодить темы,поэтому задам вопрос здесь


поскольку сервис должен работать в потоке отдельном от потока ui возник вопрос. система убила процесс который является родительским для потока который работает как сервис,значит она(система) убьет и все дочерние потоки порожденные этим процессом,в том числе и "поток-сервис"?
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
23.02.2013, 22:20  [ТС] #13
Никто не сталкивался с данной проблемой ?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.02.2013, 22:42 #14
если UI поток вылетает с екзепшеном, то вроде все останавливается, в других случаях не должно.

Добавлено через 22 секунды
нет, не сталкивался.
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
24.02.2013, 00:28  [ТС] #15
[QUOTE=V0v1k;4172345]если UI поток вылетает с екзепшеном, то вроде все останавливается, в других случаях не должно.
1. Что есть UI ?
2. Тут похоже вылетает в native code...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2013, 00:28
Привет! Вот еще темы с ответами:

Остановка службы - Программирование Android
Служба может быть остановлена системой по разным причинам: нехватка памяти, режим экономии энергии... А можно ли запретить остановку...

Выключение службы через определенное время - Программирование Android
Нужно, чтобы после получения широковещательного сообщения о новом СМС запускалась служба ровно на одну минуту. Сейчас у меня в onReceive...

Как по уму организовать циклическую работу службы? - Программирование Android
Привет. Для реализации циклических действия в фоне я делаю так: public class Server extends IntentService { ...

Перезапуск службы - CMD/BAT
Добрый день. Хочу осуществить перезапуск службы через bat-файл. Написал пока так sc stop %1 &amp; sc start %1 %2 В качестве...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.02.2013, 00:28
Ответ Создать тему
Опции темы

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