Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Service LiveTime / 14 сообщений из 14, страница 1 из 1
27.09.2014, 12:01
    #38759511
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
Как можно задать период существования Сервиса?

У меня описан сервис, который запускается при загрузке системы и работает в фоновом режиме.
Структура выглядит приблизительно так:

Код: 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.
public class BootUpReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		Log.d(myConstants.SYSTEM,"Start boot receiver");
		Intent serviceIntent = new Intent(context, MyService.class);
	        context.startService(serviceIntent);
	}
}

...

Сервис[

    Поток ServerSocket[
       while (true)
       {
            добавить клиента (ServSock.accept())
        }
    ]

    Поток RS232[
    ...
    ]
]



По непонятным мне причинам. Сервис убивается(вместе со всеми потоками) ровно через 30 минут (после запуска или подключения какого нибудь клиента к серверу(описано ниже) ), и запускается заново. В следствии чего у меня теряются все соединения.

Если в момент этого "счетчика" (30 мин) к "ServerSocket" кто либо подключается, то отсчет начинается сначала.

По логам BootReceiver срабатывает только один раз. И сервис не разрушается(нет вызова метода onDestroy()) а просто создается заново.
Пробовал ставить TimeOut на поиск клиента, что бы сервис не вис на этой операции, а хоть иногда откликался - не помогло...



Как это можно предотвратить, или задать этот самый LiveTime?
...
Рейтинг: 0 / 0
27.09.2014, 14:05
    #38759530
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
BoJI4er,

"Починил"


Было:
Код: java
1.
2.
3.
4.
5.
6.
7.
 
          @Override
	  public int onStartCommand(Intent intent, int flags, int startId) {
		//  Log.d(myConstants.SYSTEM, "Start Service");
		  someTask();
		  super.onStartCommand(intent, flags, startId);
	  }


Код: xml
1.
2.
3.
4.
5.
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">





...

Сделал:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
          @Override
	  public int onStartCommand(Intent intent, int flags, int startId) {
		//  Log.d(myConstants.SYSTEM, "Start Service");
		  someTask();
		  Notification note = new Notification( 0, null, System.currentTimeMillis());
		  note.flags |= Notification.FLAG_NO_CLEAR;
		  startForeground(startId, note );
		  return super.onStartCommand(intent, flags, startId);
	  }


Код: xml
1.
2.
3.
4.
5.
6.
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:persistent="true">
...
Рейтинг: 0 / 0
29.09.2014, 10:09
    #38760245
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
как то не правильно

втыкать в onStartCommand
Notification note = new Notification( 0, null, System.currentTimeMillis());
...
Рейтинг: 0 / 0
29.09.2014, 17:11
    #38760969
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
Джибскак то не правильно

втыкать в onStartCommand
Notification note = new Notification( 0, null, System.currentTimeMillis());

по причине...?
...
Рейтинг: 0 / 0
29.09.2014, 17:49
    #38761049
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
а если будешь отправлять какие то интенты, каждый раз все это создавать ?

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

хотя, х/з , тут от задачи зависит.
...
Рейтинг: 0 / 0
29.09.2014, 17:53
    #38761059
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
Джибс...хотя, х/з , тут от задачи зависит.
в том то и дело. мне этот вариант подходит по той причине, что если "вдруг" сервис снова вызовется или умрет - придется выполнять пере запуск всей системы.
...
Рейтинг: 0 / 0
30.09.2014, 15:06
    #38762137
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
BoJI4erпридется выполнять пере запуск всей системы.

зачем ?
...
Рейтинг: 0 / 0
01.10.2014, 20:34
    #38763967
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
ДжибсBoJI4erпридется выполнять пере запуск всей системы.

зачем ?

потому что в системе 2а процессора(в данный момент это "AM335x" от TI и "Cyclone IV" от Altera). Первый отвечает за андроид, а второй за 3 шаговых двигателя + мудреный датчик . В такой системе внезапный перезапуск сервиса означает "КРАХ" системы.
...
Рейтинг: 0 / 0
01.10.2014, 20:55
    #38763985
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
BoJI4erДжибспропущено...


зачем ?

потому что в системе 2а процессора(в данный момент это "AM335x" от TI и "Cyclone IV" от Altera). Первый отвечает за андроид, а второй за 3 шаговых двигателя + мудреный датчик . В такой системе внезапный перезапуск сервиса означает "КРАХ" системы.

если клиенты твои, можно было и сделать что бы это незаметно проходило.
...
Рейтинг: 0 / 0
02.10.2014, 09:30
    #38764299
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
ДжибсBoJI4erпропущено...


потому что в системе 2а процессора(в данный момент это "AM335x" от TI и "Cyclone IV" от Altera). Первый отвечает за андроид, а второй за 3 шаговых двигателя + мудреный датчик . В такой системе внезапный перезапуск сервиса означает "КРАХ" системы.

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

каким образом можно незаметно перезапустить систему которая ежесекундно отправляет команды на процессор для управления шаговыми двигателями? ... может я чего то не заметил... можешь пример дать?
...
Рейтинг: 0 / 0
03.10.2014, 22:24
    #38766665
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
BoJI4erкаким образом можно незаметно перезапустить систему которая ежесекундно отправляет команды на процессор для управления шаговыми двигателями? ... может я чего то не заметил... можешь пример дать?

так мы про сервисы говорим, или про что ?

и какие сервисы ?
...
Рейтинг: 0 / 0
07.10.2014, 17:20
    #38769428
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
ДжибсBoJI4erкаким образом можно незаметно перезапустить систему которая ежесекундно отправляет команды на процессор для управления шаговыми двигателями? ... может я чего то не заметил... можешь пример дать?

так мы про сервисы говорим, или про что ?

и какие сервисы ?

пфф... я мастер объяснять :D

Если в кратце то:

При запуске системы создается сервис.
В сервисе создается 2а основных потока (RS232 и LAN).
При чем LAN поток может(и делает) создавать дочерние потоки (при каждом подключении).

п.с. надеюсь понятно.

Ты предложил "сделать переинициализацию системы" незаметно. ... я спрашиваю - "Как при такой системе (постоянный, непрерывный обмен с RS232) можно сделать незаметно, что бы не обвалить систему?" (система (из этих потоков) загружается в среднем 40-60 секунд). ... мне в голову ничего вменяемого(что будет не заметно) не приходит...
...
Рейтинг: 0 / 0
08.10.2014, 10:46
    #38770034
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
BoJI4erДжибспропущено...


так мы про сервисы говорим, или про что ?

и какие сервисы ?

пфф... я мастер объяснять :D

Если в кратце то:

При запуске системы создается сервис.
В сервисе создается 2а основных потока (RS232 и LAN).
При чем LAN поток может(и делает) создавать дочерние потоки (при каждом подключении).

п.с. надеюсь понятно.

Ты предложил "сделать переинициализацию системы" незаметно. ... я спрашиваю - "Как при такой системе (постоянный, непрерывный обмен с RS232) можно сделать незаметно, что бы не обвалить систему?" (система (из этих потоков) загружается в среднем 40-60 секунд). ... мне в голову ничего вменяемого(что будет не заметно) не приходит...

тот же REST ,

почему нет ?
чаще всего и крутятся на стороне сервиса.

у меня же, в несколько потоках, непрерывно некоторые проекты общаются с серверами для расчета.
и если нет сети, и прочие гадости жизни, что для мобильных вполне.
то приходиться все делать незаметно для пользователей.
даже если сам сервис наепнулся, приходиться, опят таки все тихонько восстанавливать, как будто ничего не было.
...
Рейтинг: 0 / 0
09.10.2014, 15:25
    #38771873
BoJI4er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Service LiveTime
Джибс,

на устройстве всего 0,6 ГГц проц и 128 мб ОЗУ ... в принципе можно было бы реализовать REST на случай восстановления выполнения загруженного файла (если таковой имеется) ... но на такой конфигурации железа .. мне проще перегрузить систему... ибо у меня под 3емя клиентами и так уже начинаются небольшие задержки (из-за количества открытых потоков) ...

хотя не спорю... вариант достойный. спасибо за совет.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Service LiveTime / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]