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