Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

Как обновить service не перезапуская его?

#java #android #service #android_service

                    
Возможно ли такое, чтобы запускать сервис при запуске приложения, а затем после каких-либо
операций на UI обновлять сервис без его перезапуска (т.е. сервис работает с начальными
данными, затем пользователь что-то делает, данные передаются в сервис и он начинает
работать уже с новыми данными, не делая при этом stopService(), startService) ?
    


Ответы

Ответ 1



Да, можно. При первом запуске сервиса вызывается его метод onCreate. При каждом последующем вызове Context#startServise(Context ctx, Intent intent), при условии, что сервис уже запущен, вызовется его метод onStartCommand. Таким образом по умолчанию вы получаете нужное вам поведение и не сервис не перезапускается каждый раз при вызове startServise, а вызываете метод ранее созданного экземпляра класса. При этом вы можете через содержимое интента передавать к-л данные, обновляя содержимое полей класса сервиса. Также есть ещё механизм биндинга сервиса к активити, позволяющего в активити получить ссылку на экземпляр запущенного сервиса и напрямую вызывать методы его экземпляра примерно так: instanceOfServiceClass.someMethodInServiceClass(someArgument);. Загуглить можно по Android service Binder. Вот статья на русском: Service. Биндинг. ServiceConnection

Комментариев нет:

Отправить комментарий