Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/12: Рейтинг темы: голосов - 12, средняя оценка - 4.50
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
1

Перезапуск службы

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

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

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

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

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

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

Перезапуск animatedvectordrawable
Добрый день. Пытаюсь сделать так чтобы animatedVectorDrawable постоянно...

Полный перезапуск приложения
Добрый день подскажите как запилить полный перезапуск приложения, аналогичный...

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

14
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 03:24 2
Тоже интересно
0
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
0
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 15:05 4
Всё дело в том что Service имеет доступ к UI и не может выполнятся вечно типа while(true)
Если нужно чтобы сервис постоянно что-то делал типа while(true) - нужно использовать IntentService и в doInBackground помещать while(true)
0
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
0
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 15:08 6
кстати, onStartCommand вообще появился в API 5 (ос 2.0)
0
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
21.02.2013, 15:09  [ТС] 7
что-то я не нашел doInBackground
0
elf32
-13 / 8 / 0
Регистрация: 15.02.2013
Сообщений: 87
21.02.2013, 15:17 8
сорри, не doInBackground а onHandleIntent
0
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 -----
И что это означает ?
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
21.02.2013, 17:52 10
это весь файл?
0
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
21.02.2013, 19:43  [ТС] 11
Цитата Сообщение от YAUHEN Посмотреть сообщение
это весь файл?
нет - последняя запись
0
lavan
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
21.02.2013, 22:48 12

Не по теме:

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


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

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

Перезапуск сервиса после task killer
Здравствуйте, подскажите пожалуйста, как сделать, что бы сервис перезапускался...

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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