@DS2107

Как сделать службу (service) не выключаемой?

В моем приложение запускается служба , в которой крутится сокет , он слушает приходящие сообщения клиенту. когда я полностью закрываю приложение служба работает , но спустя пол дня служба может выключится по не понятным причинам. Так же если вызвать сборщик мусора в телефоне , который закрывает все окна, убирает мусор и т.д , то служба то же выключается. Как продлить время моей службы?

Метод который запускает службу
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
        {
           
            notif = DependencyService.Get<IStaticNotification>().ReturnNotif();
            StartForeground(ServiceRunningNotifID, notif);
            NotificationMessageManager = (NotificationMessage)DependencyService.Get<INotificationManager>();

            NotificationMessageManager.NotificationReceived += (sender, eventArgs) =>
            {
                var evtData = (Service.Notification.NotificationEventArgs)eventArgs;
                ShowNotification(evtData.Title, evtData.Message);
            };
            NotificationCalllManager.NotificationReceived += (sender, eventArgs) =>
            {
                var evtData = (Service.Notification.NotificationEventArgs)eventArgs;
                ShowNotification(evtData.Title, evtData.Message);
            };





            socket.MyWebSocket = new WebSocketSharp.WebSocket("ws://" + address);
            socket.MyWebSocket.WaitTime = TimeSpan.FromSeconds(5.0);
            socket.MyWebSocket.OnMessage += Ws_OnMessage;
            socket.MyWebSocket.OnOpen += Ws_OnOpen;
            socket.MyWebSocket.OnClose += Ws_OnClose;
            socket.MyWebSocket.OnError += Ws_OnError;

            //  socket.MyWebSocket.Connect();

            // создаем новый поток
            Thread myThread = new Thread(MyTimer);
            // запускаем поток myThread
            myThread.Start();


            return StartCommandResult.Sticky;
        }


Службу я создал, что бы обрабатывать входящие сообщения со своего сервера и в зависимости от состояния приложения показывать Push Уведомления. Я читал за FCM или GCM, но мне надо реализовать задачу именно через службу или другими путями , без использования сторонних серверов , типа FCM
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
@402d
начинал с бейсика на УКНЦ в 1988
Если приложение для личных целей, то можно попробывать наколхозить
Добавить его в исключения энергосбережения. (Тут по разному. Гугли don't kill my app)
Добавь перезапуск по событиям
<receiver>
<intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />

                <category android:name="android.intent.category.HOME" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.USER_PRESENT" />

                <category android:name="android.intent.category.HOME" />
            </intent-filter>

</receiver>

еще хорошо повесить слушателей на изменение состояния сетевого адаптера (вайфай) для переконекта

Если для широкой аудитории, то лонгпулы уже все перестали использовать.
Используется схема FCM + шедуле опрос сервера
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы