powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Service LiveTime
14 сообщений из 14, страница 1 из 1
Service LiveTime
    #38759511
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно задать период существования Сервиса?

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

Код: 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
Service LiveTime
    #38759530
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Service LiveTime
    #38760245
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как то не правильно

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

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

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

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

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

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

зачем ?

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


зачем ?

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

тот же REST ,

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

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

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

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


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