#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
Комментариев нет:
Отправить комментарий