Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 21 сен 2017, 02:49

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 99 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Урок 92. Service. Простой пример
СообщениеДобавлено: 01 июл 2012, 23:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1345
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.

В этом уроке:


- создаем, запускаем и останавливаем простой сервис




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 22 май 2017, 23:41, всего редактировалось 9 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 31 авг 2012, 14:17 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Экспериментирую...приложение и сервис в разных процессах.
А почему после уничтожения сервис остается видим в Devices (в процессах)? И приложение, я его кнопкой Назад закрываю, тоже остается висеть в процессах...разве они не должны оттуда пропасть?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 31 авг 2012, 14:43 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Приложение не закрывается кнопкой назад, оно сворачивсется и продолжает висеть в памяти. Если системе понадобится свободная память она сама вырубет неактивные приложения.
Такова архитектура андроид.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 31 авг 2012, 14:54 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
ок


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 17:37 

Зарегистрирован: 10 авг 2012, 16:27
Сообщений: 22
Откуда: Ukraine, Lviv
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте.

Эмм... возможно я придираюсь, но:
Цитата:
Итак, сервис – это некая задача, которая работает в фоне и не использует UI.
А потом, после добавления кода в someTask();
Цитата:
Вывод – сервис работает в основном потоке и блокирует экран.
То есть, насколько я понял, надо все ровно создавать отдельный поток?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 19:03 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Я сую его в отдельный процесс и получается - сервис сам по себе, приложение само по себе


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 19:08 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Coment оба утверждения автора являются правильны, так как в первом он не говорил о потоке, о чём вы приводите вторую его цитату.
Если не давать сервису поток, то он конечно будет выполнятся в основном. А на счёт блокирует экран - так это не есть взаимодействие с UI.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 19:51 

Зарегистрирован: 10 авг 2012, 16:27
Сообщений: 22
Откуда: Ukraine, Lviv
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Честно, не сочтите за придирку и троллинг, хочу досконально разобраться, так как пишу сейчас проект и планирую в скором времен попасть на должность juniora (эх... мечты = :roll: ), так вот: Graphic User Interface (GUI, UI) основной поток в котором не рекомендуется выполнять "тяжелые" задачи. Я читаю, что "service - не использует UI для своих задач" - так сказать работает в фоновом режиме. Если же мы даем ему конкретную задачу он использует UI,так?
Тогда еще вопрос - зачем мне запускать service без конкретной задачи, только для того, что бы он не занимал UI? Я понимаю, что service весьма полезный компонент, который позволяет реализовать мои задачи, даже при выключенном activity, но вот пока еще (лично для меня) остается непонятным моменты данного урока. Я думал, что все что мы "скормим" service - само будет распределятся по разным потокам и мне не нужно будет это ручками прописывать :)
Извините за такой вот каламбур. Просто, на данный момент, этот сайт и форум самые адекватные и содержательные по теме Android (Это не лесть, а правда) потому я решаюсь задавать тут вопросы ;)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 20:41 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Цитата:
Я читаю, что "service - не использует UI для своих задач" - так сказать работает в фоновом режиме. Если же мы даем ему конкретную задачу он использует UI, так?

Не так. Вы видимо не до конца поняли суть и само понятия сервиса. Проведу аналогию с виндовс, там есть службы - например dns (все знают что она делает), так вот вы как пользователь её не видите но она есть и выполняет свою поставленную задачу.
Ну и UI понятное дело что расшифровывается как интерфейс пользователя и соответственно пользователь никак не может взаимодействовать с сервисом так как он для него "визуально не видим".
Приведу пример из приложения под андрюшку: клиент-серверное приложение - клиент это и есть наше приложение на андрюше, оно принимает какие то данные с сервера каждую минуту, так вот за приём данных отвечает сервис (служба) который дальше оповещает/передаёт данные в активити и дальше происходит взаимодействие приложение с пользователем. Просто вы ж не будете всё это писать в приложении, так как пользователь закроет приложение и взаимодействие с сервером утрачено, а так он может закрыть приложение а сервис будет спокойно работать и когда придут новые данные с сервера он оповестит (или запустит приложение) пользователя (но не через какой либо UI, так как он не видим).

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 20:59 

Зарегистрирован: 10 авг 2012, 16:27
Сообщений: 22
Откуда: Ukraine, Lviv
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо за развернутый ответ.

Просто, как я уже писал выше, я подумал, что в android и мы конечно, давая service какую либо задачу, сей компонент сам будет создавать потоки, то бишь когда пишем
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.  void someTask() {
  2.     for (int i = 1; i<=5; i++) {
  3.       Log.d(LOG_TAG, "i = " + i);
  4.       try {
  5.         TimeUnit.SECONDS.sleep(1);
  6.       } catch (InterruptedException e) {
  7.         e.printStackTrace();
  8.       }
  9.     }
  10.   }


то бдет работать как
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.  void someTask() {
  2.     new Thread(new Runnable() {
  3.       public void run() {
  4.         for (int i = 1; i<=5; i++) {
  5.           Log.d(LOG_TAG, "i = " + i);
  6.           try {
  7.             TimeUnit.SECONDS.sleep(1);
  8.           } catch (InterruptedException e) {
  9.             e.printStackTrace();
  10.           }
  11.         }
  12.         stopSelf();
  13.       }
  14.     }).start();
  15.   }
Ну вроде если бы мы не писали отдельно потоки и handler, а вместо этого использовали async task, который сам все делает :)
А так, еще раз спасибо, предназначение service осознал, просто интересовала реализация.


Последний раз редактировалось Coment 18 сен 2012, 21:07, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 21:06 

Зарегистрирован: 14 май 2012, 16:18
Сообщений: 372
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Можете использовать IntentService
Он тоже сам все делает ;)
Цитата:
Extending the IntentService class

Because most started services don't need to handle multiple requests simultaneously (which can actually be a dangerous multi-threading scenario), it's probably best if you implement your service using the IntentService class.

The IntentService does the following:
Creates a default worker thread that executes all intents delivered to onStartCommand() separate from your application's main thread.
Creates a work queue that passes one intent at a time to your onHandleIntent() implementation, so you never have to worry about multi-threading.
Stops the service after all start requests have been handled, so you never have to call stopSelf().
Provides default implementation of onBind() that returns null.
Provides a default implementation of onStartCommand() that sends the intent to the work queue and then to your onHandleIntent() implementation.

All this adds up to the fact that all you need to do is implement onHandleIntent() to do the work provided by the client. (Though, you also need to provide a small constructor for the service.)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 18 сен 2012, 21:16 

Зарегистрирован: 10 авг 2012, 16:27
Сообщений: 22
Откуда: Ukraine, Lviv
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
О... стоит присмотреться. Спасибо, есть теперь чем заняться на досуге =)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 21 дек 2012, 11:24 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Хочу к автору обратиться....
Просто необходимо указать в уроке, что у сервиса есть подлянка, что при блокировке реального телефона он уходит в паузу, и код в нем не будет выполняться.
Именно это у меня сейчас и случилось - написал код, который должен работать в фоне, все работает на эмуляторе, а в реальном теле - пауза. Буду щас переписывать все под аларманагер из-за этого...
Это надо написать, чтобы народ не надеялся на корректную работу и не делал моих ошибок )))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 21 дек 2012, 20:22 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
powercat
Как я уже говорил что в сервисах не разбираюсь но что то мне не верится, вот только закончили проект, у него сервисы делают апдейт базы, апдейт может идти и несколько минут, за это время телефон блокироваться может десятки раз и почему то всё работает... Но к сожалению (а может и к счастью) не я эту часть писал =)

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 22 дек 2012, 10:09 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Там есть же шняжка, не дающая телу заблокироваться, но это разовая хрень...с таймертаском же сервис не сочетается...
Тем не менее, подлянка есть, и если ее не оговорить заранее, то у того, кто надеется, что сервис живет всегда, будет облом, если он все на него завяжет...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 24 дек 2012, 14:44 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1345
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
powercat писал(а):
Хочу к автору обратиться....
Просто необходимо указать в уроке, что у сервиса есть подлянка, что при блокировке реального телефона он уходит в паузу, и код в нем не будет выполняться.
Именно это у меня сейчас и случилось - написал код, который должен работать в фоне, все работает на эмуляторе, а в реальном теле - пауза. Буду щас переписывать все под аларманагер из-за этого...
Это надо написать, чтобы народ не надеялся на корректную работу и не делал моих ошибок )))

Я сам недавно об этом узнал в боевых условиях )
Думаю, будет по этой теме отдельный урок, когда разберусь полностью с темой.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 24 дек 2012, 14:52 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Отлично


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 01 янв 2013, 16:56 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Как я и говорил что не верю то всё таки оказался прав, можно делать бесконечный сервис. Много текста, так что дам подсказку, читайте книгу "Android 4 для профессионалов. Создание приложений для планшетных компьютеров и смартфонов. Сатия Коматинени, Дэйв Маклин", а именно глава 19. Сразу скажу что на русском в электронном варианте не найти, купить можно.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 15 янв 2013, 10:59 

Зарегистрирован: 13 ноя 2012, 08:02
Сообщений: 57
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
подскажите пожалуйста название события когда выделяешь текст и появляется панель со значками копировать вставить и тд. нужно в сервисе написать чтоб если кто то текст выделяет то вместе с системным панелью появился и кнопка или 2 кнопки свои.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 92. Service. Простой пример
СообщениеДобавлено: 15 янв 2013, 15:02 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 11:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
а разве это не контектстное меню?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 99 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB