Урок 98. Service. Локальный биндинг
Урок 98. Service. Локальный биндинг
В этом уроке:
- обмен данными в биндинге
Click here to read this article!
- обмен данными в биндинге
Click here to read this article!
Последний раз редактировалось damager82 22 май 2017, 23:47, всего редактировалось 4 раза.
Re: Урок 98. Service. Локальный биндинг
Жесть ))) я нихрена не понял....)))
Предлагаю в каждом уроке добавить пример реального применения, иначе совершенно неясно, что для чего (((
Предлагаю в каждом уроке добавить пример реального применения, иначе совершенно неясно, что для чего (((
Re: Урок 98. Service. Локальный биндинг
powercat
По твоим постам, ты хочешь задействовать сервис, но не понимаешь для чего. Как только появится понимание, зачем тебе выделять часть кода в отдельный сервис, так сразу все станет на свои места.
Самая простая аналогия Активити и Сервисов:
Ативити, это окно браузера пользователя, а Сервис это сайт, находящийся на удаленном сервере. Пользователь производит действия в браузере, браузер генерирует запрос серверу, а тот выполняет код и выдает запрошенный результат. Если работал с технологией AJAX, то вообще просто станет в понимании.
По твоим постам, ты хочешь задействовать сервис, но не понимаешь для чего. Как только появится понимание, зачем тебе выделять часть кода в отдельный сервис, так сразу все станет на свои места.
Самая простая аналогия Активити и Сервисов:
Ативити, это окно браузера пользователя, а Сервис это сайт, находящийся на удаленном сервере. Пользователь производит действия в браузере, браузер генерирует запрос серверу, а тот выполняет код и выдает запрошенный результат. Если работал с технологией AJAX, то вообще просто станет в понимании.
Re: Урок 98. Service. Локальный биндинг
Я понимаю клиент-серверную технологию )))
Но вот применительно к последним урокам, то все, кроме Уведомления, для меня как-то...ээ...не знаю...не имеет смысла что-ль, кроме как ПРИМЕР работы сервиса в разных ситуациях...вот эти ситуации и хочу понять...Поясню - какой смысл что-то выносить в сервис кроме уведомлений? Ведь приложение ОТКРЫТО и все можно сделать в нем, зачем еще приплетать сервис? А с уведомлением все ясно - приложение закрыто, сервис крутиться, в определенное время что-то выполняет, может открыть приложение (вроде), может не только уведомить, но и всякие так штуки выполнить...но самостоятельно...поэтому у меня и возникает необходимость в пояснении - для чего одновременно надо работать и приложению, и сервису...
Но вот применительно к последним урокам, то все, кроме Уведомления, для меня как-то...ээ...не знаю...не имеет смысла что-ль, кроме как ПРИМЕР работы сервиса в разных ситуациях...вот эти ситуации и хочу понять...Поясню - какой смысл что-то выносить в сервис кроме уведомлений? Ведь приложение ОТКРЫТО и все можно сделать в нем, зачем еще приплетать сервис? А с уведомлением все ясно - приложение закрыто, сервис крутиться, в определенное время что-то выполняет, может открыть приложение (вроде), может не только уведомить, но и всякие так штуки выполнить...но самостоятельно...поэтому у меня и возникает необходимость в пояснении - для чего одновременно надо работать и приложению, и сервису...
Re: Урок 98. Service. Локальный биндинг
powercat
Для меня лично, это возможность создать службу, которая будет работать в фоне и к примеру синхронизировать данные с интернетом.
Для меня лично, это возможность создать службу, которая будет работать в фоне и к примеру синхронизировать данные с интернетом.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 98. Service. Локальный биндинг
В нашем проекте сервис работает с GPS, интернетом, базой данных. Это дело исключительно фоновой службы, какой он и является. Он подгружается с запуском телефона и независим от активностей, ибо активность это уже отдельная пьесса, либо другими словами: у неё логика ПОДКЛЮЧАТЬСЯ к сервису. Сервис может открыть когда надо её, уведомить её. Да и вообещ всё что надо сделать. Сервису можно повысить приоритет почти до уровня активности, что также является немаловажным фактором. Думаю вкратце ответил на ваш вопрос.
Не понял. Можно поподробней?Ведь приложение ОТКРЫТО и все можно сделать в нем
Re: Урок 98. Service. Локальный биндинг
Чтобы распараллелить задачу и не подвешивать UI поток какими-либо сложными вычислениями, или ожиданиями ответа от сервера, длительными операциями с файлами и т.п. обычно прибегают к Threads либо AsyncTask, но они после выполнения кода заканчивают свое существование, чтобы этого не происходило организовывают бесконечные циклы (Loopers). Сервис в отличии от них может жить и после выполнения кода, сохраняя все свои локальные данные, т.е. он уже имеет свой собственный looper и может выполнять определенные задачи по требованию без повторных инициализаций.
Для каких-то разовых вычислений лучше использовать AsyncTask, а если нужно выполнять периодически определенные задачи в фоне (обработку периодически поступающих данных) не в UI потоке, то может быть удобно использовать сервисы.
Для каких-то разовых вычислений лучше использовать AsyncTask, а если нужно выполнять периодически определенные задачи в фоне (обработку периодически поступающих данных) не в UI потоке, то может быть удобно использовать сервисы.
Re: Урок 98. Service. Локальный биндинг
А годится ли сервис для этого - не только кинуть уведомление юзеру, но и обратиться к базе, созданной в приложении, и изменить в ней данные?
Re: Урок 98. Service. Локальный биндинг
Годится.powercat писал(а):А годится ли сервис для этого - не только кинуть уведомление юзеру, но и обратиться к базе, созданной в приложении, и изменить в ней данные?
Re: Урок 98. Service. Локальный биндинг
Подскажите кто сталкивался:
код из примера на строчке
myService = ((MyService.MyBinder) binder).getService();
выходит ошибка приложения и полное зависание
Класс MyBinder в MyService существует, по идеи все должно работать, но "binder" почему то не приводится к MyService.MyBinder - ошибка
код из примера на строчке
myService = ((MyService.MyBinder) binder).getService();
выходит ошибка приложения и полное зависание
Класс MyBinder в MyService существует, по идеи все должно работать, но "binder" почему то не приводится к MyService.MyBinder - ошибка
Re: Урок 98. Service. Локальный биндинг
А как обратиться к базе из сервиса? Сервис же не видит путь к базе (она не по умолчанию создана, а по кастомному пути). А путь сидит в приложении, которое закрыто, когда работает сервис. А в явном виде путь к базе не могу задать, т.к. он определяется от того, где встало приложение.neoksi писал(а):Годится.powercat писал(а):А годится ли сервис для этого - не только кинуть уведомление юзеру, но и обратиться к базе, созданной в приложении, и изменить в ней данные?
Re: Урок 98. Service. Локальный биндинг
в этом случае может ContentProvider нужно реализовать.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 98. Service. Локальный биндинг
уууу....как сложно...неужели нельзя проще...
так контентпровайдер должен знать путь к базе тоже...а как его получить?
так контентпровайдер должен знать путь к базе тоже...а как его получить?
Re: Урок 98. Service. Локальный биндинг
Через интент передаю в сервис путь к базе. В сервисе через
из базы получаю данные. Все работает.
Как теперь это же сделать через Хелпер? Он уже есть в приложении в виде отдельного файла. Пробовал засунуть его в код сервиса - посыпались ошибки. Как пользоваться хелпером в сервисе?
Код: Выделить всё
db=SQLiteDatabase.openOrCreateDatabase(pathToDB, null);
Как теперь это же сделать через Хелпер? Он уже есть в приложении в виде отдельного файла. Пробовал засунуть его в код сервиса - посыпались ошибки. Как пользоваться хелпером в сервисе?
Re: Урок 98. Service. Локальный биндинг
мне приходит в голову такая схема: пишется сервис в сервисе реализовывается контент провайдер который в свою очередь реализовывает связь с бд, соответственно сервис работает себе скрыто от пользователя и может давать любые сигналы твоему приложению в нужный момент, и приложение может отзыватся сервису командами которые будут идти в бд. В общем приложение общается с сервисом, а сервис с контентпровайдером, провайдер с бд... замудренно то как)))так контентпровайдер должен знать путь к базе тоже...
или может и есть возможность (просто я не знаю) реализовать бд в сервисе
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 98. Service. Локальный биндинг
замудрено )))
тем более, что у меня приложение не должно общаться с сервисом ))) только старт и все
ну вот все получается, кроме того, как прикрутить хелпер в серсив...без него - все работает, а вот как с ним сделать...
тем более, что у меня приложение не должно общаться с сервисом ))) только старт и все
ну вот все получается, кроме того, как прикрутить хелпер в серсив...без него - все работает, а вот как с ним сделать...
Re: Урок 98. Service. Локальный биндинг
наверное хелпер прикручивается так же само как и к приложению. Или я не прав...
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 98. Service. Локальный биндинг
В приложении я его в отдеьлном файле сделал, а в сервисе засовываю внутрь него ))) Логично б, закрыл приложение, т.е. приложенский хелпер более не доступен и работает сервисный...новотвамхрен...не работает ((( и имя поменял хелперу на отличное от приложенского...Правда момент, когда существуют оба - приложение еще открыто, а сервис стартует...фиг знает, что придумать...
Re: Урок 98. Service. Локальный биндинг
Велосипед однако изобретаем?
Принципиально все работает так:
1) Приложение - > Контент провайдер - > Хелпер БД
2) Сервис - > Контент провайдер - > Хелпер БД
3) Приложение - > Вызов сервиса
Если не ленится и реализовать изначально контент провайдер, то в дальнейшем, с данными становится работать очень просто.
Принципиально все работает так:
1) Приложение - > Контент провайдер - > Хелпер БД
2) Сервис - > Контент провайдер - > Хелпер БД
3) Приложение - > Вызов сервиса
Если не ленится и реализовать изначально контент провайдер, то в дальнейшем, с данными становится работать очень просто.
Re: Урок 98. Service. Локальный биндинг
Я не понимаю, куда надо пихать код хелпера ((( и куда провайдера...
Из приложения база заполняется и приложение закрывается. Далее с базой работает сервис, который ее читает и редактирует. Исходя из этого - куда пихать коды? )))
Из приложения база заполняется и приложение закрывается. Далее с базой работает сервис, который ее читает и редактирует. Исходя из этого - куда пихать коды? )))