Tee service android что это

Tee service android что это

Или войти с помощью одного из сервисов

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Описание

= Предоставляет список приложений, установленных на телефоне, нужен для поисковых запросов
— GoogleQuickSearchBox
— QuickSearchBox
* не удалять, необходим для нормальной работы

= Выдает запрос пользователю, если какое-то приложение пытается выполнить резервное копирование/восстановление данных
— framework (services.odex)
* удаление по желанию (я у себя удалил)

— CalendarImporter
— CalendarProvider
— Email
— Exchange
— framework (framework.odex)
— GoogleCalendarSyncAdapter
— GoogleLoginService
— Launcher2
— MTKAndroidSuiteDaemon

— Calendar
— MtkBt
* я у себя удалил, календарь при этом работает (но я не использую синхронизацию ни с компом, ни с гугловой учеткой)

— Calendar
— GoogleCalendarSyncAdapter
* не удалять, если пользуетесь календарем, необходим для его работы

— Contacts
— Mms
— Phone
— Settings
— StkSelection
* лучше не удалять, необходим для нормальной работы (в том числе, что-то связанное с выбором SIM)

— Calendar
— ContactsProvider
— Email
— Exchange
— framework (framework.odex)
— GoogleContactsSyncAdapter
— GoogleLoginService
— GoogleQuickSearchBox
— Launcher2
— Maps_hdpi
— Mms
— MTKAndroidSuiteDaemon
— MtkBt
— Phone
— QuickSearchBox
— Talk
— VoiceSearch
* не удалять, необходимо для работы телефона

* не удалять, необходимо для работы телефона

— DownloadProvider
— framework (services.odex)
— Settings

— framework (services.odex)
— MediaProvider
— VoiceSearch

— CalendarImporter
— Contacts
— Exchange
— framework (services.odex)
— GN_ZoomClipView
— LatinIME
— Launcher2
— MediaUploader
— Mms
— MtkBt

= Управление блокировками SIM-карт, вызывается из инженерного меню, пункт «SIMMeLock»
— EngineerMode
* при удалении не работает соответствующий пункт «SIMMeLock», остальной функционал работает

— Calendar
— framework (services.odex)
— GoogleLoginService
* я у себя удалил, маркет и ютуб работают

= Отсылка отчетов об ошибках в гугл (возможно еще какой-то функционал)
— GoogleServicesFramework
— Phonesky
* я у себя удалил, маркет и ютуб работают

= Поддержка гугловой учетки
— GoogleServicesFramework
— GoogleTTS
— MediaUploader
— SetupWizard
— YouTube
*для работы маркета и SetupWizard необходим, если сделать сброс телефона
то запустившийся при первом включении SetupWizard на очередном шаге

= Гуглопоиск, а так же «неубираемый» виджет поиска на рабочем столе
— Browser
— Maps_hdpi
— VoiceSearch
* я у себя удалил, пользуюсь поиском из браузера, при этом пропадает строка поиска с десктопа, удаление по желанию

— framework (framework.odex)
— Maps_hdpi
— SettingsProvider
* даже при установленной альтернативной эту лучше не удалять, чтоб избежать проблем при сбросе телефона к заводским настройкам

— Browser
— EngineerMode
— framework (services.odex)
— GoogleQuickSearchBox
— Maps_hdpi
— MtkWorldClockWidget
— Phonesky
— QuickSearchBox
— Settings
— VoiceSearch
*стандартный лончер (десктоп и список приложений/виджетов), необходим
для нормальной работы, лучше оставить даже если используете
альтернативный (чтоб избежать проблем после сбороса данных на заводские)

= Как минимум доступ к данным на флешке (возможно что-то еще)
— DownloadProvider
— framework (services.odex)
*если удалить ни одно приложение не получит доступ к данным на флеш-карте через стандартный API, необходим для нормальной работы, не удалять

— Contacts
— framework (framework.odex, services.odex)
— Gallery2
— GoogleQuickSearchBox
— LatinIME
— Launcher2
— MTKAndroidSuiteDaemon
— Omacp
— Phone
— Settings
— SystemUI
— VoiceSearch

— framework (framework.odex, services.odex)
— Music
— Settings
* необходим для работы bluetooth, не удалять

= служба контроля за температурой узлов телефона
— InternalEngineerMode
* думаю, лучше не удалять

= Стандартный аудио-плеер
— AtciService
— FMRadio
— framework (framework.odex, services.odex)
— Gallery2
— GN_Camera
— GN_SoundRecorder
— GoogleQuickSearchBox
— Launcher2
— MediaProvider
— Mms
— Settings
— VisualizationWallpapers

= Поддержка звуковых эффектов
— Settings
* лучше не удалять

— CDS_INFO- CellConnService- Contacts- EngineerMode- framework (android.policy.odex, framework.odex, services.odex)- GN_MMITest- GoogleLoginService- Mms- Settings- SetupWizard- Stk1- Stk2- StkSelection- TelephonyProvider* собственно звонилка, не удалять

— GoogleLoginService
— GooglePartnerSetup
— GoogleServicesFramework
— Launcher2
— Maps_hdpi
— YouTube
* по желанию, можно удалить если не пользуетесь маркетом (хотя вещь удобная)

— framework (framework.odex, services.odex)
— GoogleBackupTransport
* не удалять, необходима для норамально работы телефона

— framework (android.policy.odex, framework.odex)
— LatinIME
— Provision
*лучше не удалять, без него всё работает до первого сброса телефона к
заводским настройкам, после сброса настройки можно сделать и вручную, НО
из замеченного: самое плохое, это при входящих звонках идет
автоматический отбой, так же по долгому нажатию кнопки вкл/выкл,
появляется только меню «выключить» без профилей и «режима полёта»

— framework (services.odex)
* я у себя удалил, бекапом пользуюсь через recovery

— Launcher2
— Phone
— StkSelection
* не удалять, необходима для работы телефона

— Launcher2
— Phone
— StkSelection
* не удалять, необходима для работы телефона

* не удалять, необходима для работы телефона

= Верхняя панель со строкой статуса, иконками сети, батареи и часами
— framework (android.policy.odex, framework.odex, services.odex)
— Settings
* не удалять, необходима для работы телефона

— Mms
* не удалять, необходима для работы телефона

Таким образом перед удалением приложения лучше заглянуть под спойлер и посмотреть, где оно еще встречается. Например:

— хотим удалить CalendarProvider, смотрим кто его использует: Calendar и GoogleCalendarSyncAdapter, т.е. после удаления CalendarProvider, скорее всего перестанут нормально работать указанные два приложения. Хотя в некоторых случаях зависимость не такая критичная. Ну да используется, но без него работать будет.

Например, в случае с YouTube, удаление которого не влечет за собой прекращение работоспособности GooglePartnerSetup, Maps_hdpi, Phonesky и VoiceSearch.

Все действия по удалению и изменению системных данных Вы делаете на свой страх и риск!

Источник

Самый сложный вредонос под Android

Коллеги из вирлаба написали статью о бэкдоре, с возможностями котого вы должны ознакомиться: http://www.securelist.com/ru/blog/207768863/Samyy_slozhnyy_Android_troyanets. В своей же статье я покажу, чем грозит заражение этим вредоносом. Но для нач.

Но для начала подобьем список особенностей и возможностей бэкдора:

Впечатляет? Тогда под кат, где я продемонстрирую несколько скриншотов.

Для исследования я взял Backdoor.AndroidOS.Obad.a с md5 E1064BFD836E4C895B569B2DE4700284. Вредонос не работает на эмуляторе. Возможно его удалось бы запустить после модификции эмулятора через командную строку, но мне проще использовать реальное устройство. Внимание! Не повторяйте такого!

Приложение весит 83 килобайта. Установку я сделаю с принудительной проверкой приложения антивирусом от Google:

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Я не думаю, что кто-то ждал, что вредонос будет обнаружен. Ну ладно. Т.к. установка происходит через штатный инсталлятор, то все запросы показаны. В том числе те, что стоят денег. Ах, если бы читали хотябы треть пользователей.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Для проверки, заражена система или нет я буду использовать Kaspersky Mobile Security. Не потому что это реклама или что-то подобное. Просто наш продукт заведомо видит и детектирует угрозу. Удалить он все равно ее не сможет после того, как я разрешу использование функций Device Administrator. Вот как детектируется вредонос:

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Я запретил использование root прав. Тут и без них достаточно «счастья» будет. На заднем плане идет обратный отсчет до появления экрана предоставление прав администратора устройства. Я предоставил эти права. Всё. Если ваш аппарт не рутован, то вы не сможете удалить это приложение. Вы уже видели, что кнопки удаления недоступны. Но даже если вызвать удаление иным образом, его нельзя завершить из-за уязвимости в Device Admin. Сейчас я попытаюсь вызвать удаление из Kaspersky Mobile Security.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Как вы можете убедиться, в списке DA вредоноса действительно не видно. А значит права администратора системы забрать у него нельзя. Так что если вы не уверены в своих знаниях и опыте, лучше используйте проверенный антивирус. Любой. Главное, чтобы у него была заслуженная великолепная репутация. Как специалист, я бы рекомендовал антивирусы отечественных производителей, т.к. в России пока еще не забивают на реальные исследования и тестирования.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Как видим, он не справился. Тогда попытаемся просто удалить вредоноса руками. Благо знаем имя пакета.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Вполне ожидаемо приложение видит вредоноса, но удалить не сумело. При этом сделало какое-то невнятное заявление о скрытии системного приложения. Ну, раз и тут автомат не справился, переходим на ручник.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Но здесь нет папки вредоноса. Очевидно, что ручник не приспособлен вообще для серьезной работы, только для очистки мусора.

Хорошо, раз в режиме «руками» мы смогли снести заразу, попробуем сделать этот из adb shell, как меня попросили в Juick. Собственно, тут ждать проблем не приходится.

root@umts_spyder:/data/app # rm com.android.system.admin-1.apk

rm com.android.system.admin-1.apk

И вредоноса нет. Теперь остается просто подчистить хвосты. Можно даже штатно.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Следующим будет приложение RootAppDelete. Выбираем удаление пользовательского ПО и.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Эта утилита не использует прав root для удаления пользовательских приложений, а вызывает штатный анисталлер. В итоге удалить бекдора им нельзя.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Как видно на последнем скриншоте, хвосты штатно зачистить все еще нельзя. Ну это не проблема. Перезагружаем смартфон и.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Да, я использовал сделаный ранее скриншот, но сути не меняет 🙂

Итак, мы столкнулись с вредоносом, который хоть и можно обезвредить, но это просто не под силу подавляющему большинству пользователей. Более того, этот вредонос защищается от удаления только штатными возможностями Android и при наличии root не использует эти права для самозащиты. Но теперь, вооружившись знанием о подобных вредоносах, вы сможете вынести их руками. Если, конечно, ваш аппарат рутован. В противном случае вам придется сделать сброс.

P.S. После удаления вредоноса и вставки SIM я обнаружил, что отключен мобильный интернет. Не исключаю, что это поведение Android или даже прошивки от Motorola. Но может быть и подлянка вредоноса.

Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? 😉

Или закинуть денег на зарплату авторам.

Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.

Что с ней так? Своё негодование вы можете высказать на zelebb@gmail.com или в комментариях. Мы постараемся учесть ваше пожелание в будущем, чтобы улучшить качество материалов сайта. А сейчас проведём воспитательную работу с автором.

Если вам интересны новости мира ИТ также сильно, как нам, подписывайтесь на наш Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, вам удобнее «Вконтакте» или Twitter? Мы есть также в Facebook.

Источник

Tee service android что это

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

-Все посты содержания «Когда появится список для прошивки ***» или же «Составьте барину список для устройства ***» будут удаляться. Научитесь пользоваться поиском по форуму в целом, и по данной теме в частности.
-Перед любыми действиями по удалению/замене/редактированию системных приложений делайте бэкап прошивки через рекавери. Также рекомендуется замораживать приложения в ® Titanium Backup перед их удалением. В случае неудачного удаления восстановить резервную копию заметно проще чем искать по форуму нужные файлы. Ни автор, ни кто-то другой не несет ответственности за ваше устройство.

Соблюдение этих правил упростит процесс систематизации информации и её поиска в данной теме.

2. Q: Какие программы можно удалять?
A: Каждый пользователь должен сам определиться какие системные приложения ему не нужны, далее нужно посмотреть могут ли быть последствия от удаление не нужных вам приложений, если их (последствий) нет, то можно смело удалять эти приложения. А если последствия есть, например некоторые проги имеют зависимости, то нужно подумать удалять вам их или нет, например вам не нужны карты Google и вы ни когда не будите использовать системные и сторонние программы которые используют данные карт гугла, значит вы смело можете удалять эти карты.

4. Q: Можно ли удалять стандартные приложения Google, повлияет ли это на работу аппарата?
A: Приложения (Maps, Gmail, Gtalk и т.д.) можно. Службы нежелательно, так как в случае удаления перестанут работать все гугловские сервисы и приложения, а также возможно появление постоянных ошибок на устройстве.

5. Q: Можно ли удалить стандартные приложения от Google (Навигация, Адреса, Просмотр улиц) отдельно от приложения Карты?
A: Просмотр улиц (Street.apk) можно, а остальные нет, так как они являются частью приложения Карты (Maps.apk).

8. Q: Удалил ненужные системные приложения, а в диспетчере задач отображаемая память телефона как и была до чистки. В чем загвоздка?
A: Ответ (взаимодействие разделов в Android).

9. Q: Удалил стандартную клавиатуру, после чего не работает SWYPE. Что делать?
A: Сделать SWYPE системным.

10. Q: Установил стороннюю звонилку и при пропущенном звонке в панели уведомлений появляется сразу 2 извещения: от стандартной и сторонней.
A: Решение: сделать стороннюю звонилку системной (я делал это через titanium backup, но подозреваю, что достаточно просто в системную папку apk перенести).

11. Q: Не могу удалить некоторые гугловские приложения; удалил из папки system/app, но они всё равно работают.
A: Возможно эти приложения находятся в папке data/app и удалить их нужно ещё и оттуда.

13. Q: Как восстановить системные приложения?
A: Ответ.

14. Q: Можно ли удалить стоковый лаунчер?
A: Можно, но только при наличии стабильно работающего стороннего лаунчера, который желательно сделать системным приложением. Но следует учесть, что не все стандартные виджеты могут работать на стороннем лаунчере.

18. Q: Можно ли создать скрипт, удаляющий приложения, и как это сделать?
A: Да, такие скрипты нередко встречаются в темах обсуждения прошивок. Почитать о создании и редактировании можно здесь.

19. Q: Почему после ребутов удалённые приложения восстанавливаются?
A: Вероятно, для того, чтобы этого не происходило, следует устанавливать кастомные ядра. Какие именно ядра лучше устанавливать и инструкции по установке смотреть в теме прошивок или ядер.

20. Q: После удаления приложения SamsungHub.apk перестал работать автоповорот экрана. Как это исправить?
A: Проблема кроется в удалённом libgnustl_shared.so. Решение этой проблемы написано здесь.

21. Q: Как убрать кнопки «S-voice» и «Быстрое подключение» из шторки?
A: Решение этой проблемы написано здесь.

22. Q: Как посмотреть запущенные фоновые процессы?
A: Включить информационный слой с данными использования ЦП (Настройки-Параметры разработчика-Выводить использование ЦП).

Зелёным выделены приложения, которые можно удалять;
Красным выделены приложения, которые нельзя/нежелательно удалять.

Список приложений для прошивок, основанных на CyanogenMod 13 (на англ. языке)

Источник

Многопоточная разработка для Android, часть 2. Раздаем задачи по сервисам

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это

Содержание статьи

В продолжении темы прошлого номера мы узнаем, каким образом в Android можно генерировать дополнительные потоки и зачем это может понадобиться. Сегодня поговорим о таком компоненте приложения, как сервисы, и опишем их роли в мобильном мире Android. Сервисы и потоки тесно переплетены между собой, поэтому, если ты еще не читал прошлый номер «Хакера», начни с моей статьи, будет полезно!

Сервисы

Компания Google в своей статье Application Fundamentals, обращенной к будущим Android-разработчикам, выделяет четыре базовых компонента Android-приложения: Activity, Service, поставщики содержимого (Content Providers) и приемники широковещательных сообщений (BroadCast Recievers). С Activity начинается знакомство с разработкой, о последних двух компонентах «Хакер» писал раньше (и еще обязательно к ним вернется), поэтому сейчас поговорим о сервисах.

Большинство мобильных устройств обладают достаточно скромными ресурсами, а значит, ОС приходится постоянно перераспределять их между работающими приложениями. Если в системе нет свободной памяти для нового запущенного приложения, то ОС принудительно завершает Activity, которые находятся в состояниях onStop и onPause, а вместе с ними и их дополнительные потоки.

Такое положение дел существенно урезает возможности дополнительных потоков внутри UI — Activity на экране постоянно меняются, а значит, созданные ими потоки не могут жить вечно. Поэтому генерировать дополнительные потоки в Activity целесообразно только в случае, если вычисления завершатся не позже, чем пользователь переключится на другое окно, — в противном случае велик риск потерять результаты или не закончить вычисления.

И тут на помощь приходят сервисы! По сути дела, это те же самые Activity, но без графических элементов. Ввиду отсутствия UI они предназначены для длительных операций, которые могут долгое время выполняться без участия пользователя. Проигрывание музыки, запись данных для фитнес-трекера, продолжительный сетевой обмен — все это задачи для сервисов.

У сервисов в Android существует даже собственный жизненный цикл (lifecycle), который схож с жизненным циклом Activity, и, не привязанные к конкретному Activity, они работают максимально возможное время. ОС начнет убивать сервисы только в экстренных ситуациях, если пользователь параллельно с нашим приложением запустит игру, которая съест вообще все ресурсы и все равно будет тормозить.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Рис. 1. Жизненный цикл сервисов (c) Google

Xakep #209. Capture the Flag

В Android сервисы создаются с помощью класса Service или его наследника IntentService. Несмотря на схожие названия, их функциональные возможности и предназначение серьезно отличаются.

IntentService

Наиболее простой способ создать свой сервис — это воспользоваться классом IntentService. Созданный с его помощью сервис запустится в новом потоке, выполнит все необходимые действия, после чего будет остановлен системой.

В принципе, этого достаточно в большинстве случаев. Чаще всего требуется отправить в фон какую-то тяжеловесную задачу и не морочить себе голову, выполнилась она или нет, — и тут как раз подойдет IntentService.

Передача данных, как и запуск самого сервиса, происходит через уже известный механизм намерений (Intent).

Любой сервис, как и Activity, необходимо зарегистрировать в манифест-файле, иначе ОС о нем не узнает и он просто не будет запущен.

Все готово! После выполнения метода startService в работающем приложении появится новый поток, который выполнит необходимые действия, не загружая UI. Но простота реализации приносит и свои минусы:

Service

А теперь настало время познакомиться с родителями :). Я сознательно начал разговор с наследника — IntentService, поскольку он предельно прост в эксплуатации: просит мало, работает долго и уходит незаметно. С «оригинальным» же Service все сложнее, чем кажется поначалу.

В статье Services, где разработчики Google рассказывают о своем детище, он назван компонентом, который позволяет выполнять длительные операции в фоне. Прочитав вступление, испытываешь огромный соблазн сразу же накидать сервисов в приложение и выкатить релиз. Но не все так просто — к примеру, портал Stack Overflow завален вопросами вроде «почему мои сервисы постоянно выдают ANR-сообщения?».

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Рис. 2. Более 60 тысяч вопросов по сервисам в Android

Оказывается, изначально объект класса Service не создает для себя новый поток, а выполняется там, где его инициализировали! Поэтому, создав в MainActivity новый сервис, разработчик довольно быстро подвесит UI. Чтобы этого избежать, необходимо внутри сервиса самостоятельно генерировать потоки (AsyncTask, Loader и так далее — выбирай любой) и помещать ресурсозатратные вычисления в них.

Сервис, созданный с помощью одноименного класса, открывает нам дверь в мир настоящей многопоточности. Это инструмент, позволяющий быстро распараллеливать однотипные задачи, создавая отдельный поток под каждую из них.

Недавно «Хакер» рассказывал, что в Android достаточно легко написать зловред, который бы шифровал пользовательские данные стойким ключом. Тогда мы не акцентировали свое внимание на производительности — файлы шифровались последовательно, один за другим. Сейчас посмотрим, как с помощью сервиса можно сократить время выполнения операций шифрования.

Поскольку объекты этого класса могут самостоятельно создавать новые потоки, мы можем запустить сервис, который будет обрабатывать одновременно максимально возможное число файлов.

Количество доступных нам потоков заранее неизвестно — это во многом зависит от ресурса устройства. Но бояться ошибок переполнения не стоит, за генерацией новых потоков следит класс ThreadPoolExecutor. Он самостоятельно выставляет лимиты по операциям, и в случае необходимости новые задачи просто встанут в очередь.

Создавать новые потоки будем с помощью классов Handler и Looper, которые нам уже знакомы по первой части статьи.

По умолчанию сервис живет в потоке породившего его Activity. Нас это не очень устраивает, поэтому в методе OnCreate нужно породить новый поток.

Каждый сервис существует в единственном экземпляре, поэтому многократный вызов метода startService не размножает экземпляры сервиса, а только создает очередь из заданий для него. И если IntentService просто выполнит все задания последовательно, одно за другим, то благодаря классу Service у нас появляется возможность запустить все задачи одновременно в независимых потоках. Достаточно в методе onStartCommand создавать новые потоки для каждой задачи.

Остановка сервиса

Как узнать, что сервис уже все сделал, особенно если мы поставили перед ним сразу несколько задач? В этом нам поможет параметр startId у метода onstartcommand — это порядковый номер каждого вызова сервиса, который увеличивается на единицу при каждом запуске.

Параметры перезапуска

Сервис — важный компонент приложения, и от стабильности его работы может зависеть стабильность всего приложения. Именно поэтому, даже если ОС и внештатно выгрузит сервис из памяти, есть возможность его запустить заново, как только появятся свободные ресурсы.

Метод onStartCommand возвращает переменную, указывающую ОС, как следует поступить с сервисом, если он был принудительно остановлен. К счастью, разработчикам не нужно запоминать сами числа, в классе Service есть их мнемонические обозначения.
Существует три варианта того, как ОС может поступить с сервисом, если он был принудительно завершен.

START_NOT_STICKY — не будет перезапущен системой, и все останется так, как есть. Подходит для случая, когда он выполняет не самые важные задачи, и приложение может позже при необходимости самостоятельно его перезапустить.

START_STICKY — будет запущен заново, но в Intent, который ОС создаст для его запуска, не будет никаких параметров. Такой вариант работает с аудиоплеерами — он должен быть активным в фоне, но не обязательно при этом автоматически начинать проигрывать песни.

START_REDELIVER_INTENT — сервис будет запущен с теми же параметрами, которые были при его последнем старте. Это удобно, когда в фоне загружается большой файл и его загрузка была прервана.

Bound Service

Иногда бывает необходимо выполнить большой объем черновой работы, а потом несколько раз использовать полученные результаты. К примеру, это может быть загрузка из сети большого XML-файла с последующим парсингом данных. Конечно, можно как-то кешировать результаты, а затем при необходимости их заново подгружать. Но есть вариант получше — создать сервис, который выполнит необходимые расчеты, раздаст данные всем желающим и завершит свою работу.

Описанный алгоритм мы можем организовать уже имеющимися средствами, но за одним исключением — непонятно, когда услуги сервиса уже больше не понадобятся и его можно остановить. Эту проблему возможно решить, создав привязанный (bound) service — это сервис, который будет работать до тех пор, пока к нему привязан хотя бы один Activity или другой сервис. В случае если «клиентов» у такого сервиса нет, он автоматически останавливается, но при необходимости может быть снова запущен.

IBinder — это интерфейс, позволяющий организовать связь между двумя различными потоками, функционирующими внутри одного процесса. Для его использования не нужно самостоятельно реализовать этот интерфейс, достаточно создать объект класса Binder. Сейчас его основной задачей будет предоставление ссылки на работающий сервис в Activity.

Чтобы Activity могли подключаться к сервису, разработчики Google создали класс ServiceConnection, основная задача которого — организовывать взаимодействие Activity и сервиса, а также следить, чтобы созданное подключение работало корректно.

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

При успешном подключении к сервису в потоке Activity появляется экземпляр сервиса, к которому произошло подключение. Индикатором состояния подключения к сервису будет булева переменная.

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

Вообще говоря, использование сервисов предполагает какие-то длительные операции. Вполне нормально, что метод getData будет выполняться длительное время и результат вычислений не вернется мгновенно.

В этом случае стоит вызывать методы сервиса в дополнительных потоках, например с помощью уже знакомого нам AsyncTask и слабых ссылок.

До тех пор пока сервис привязан к какому-либо Activity, его данные будут сохраняться, а значит, ими смогут воспользоваться и другие компоненты приложения. В этом и есть плюс привязанных сервисов — достаточно один раз загрузить и обработать данные, а затем готовые результаты смогут легко получить остальные участники приложения.

Foreground Service

В некоторых случаях необходимо сделать критически важный сервис, который будет выгружен из системы только вместе с выключением устройства. Именно такими сервисами являются аудиоплеер или GPS-трекер. Они будут работать всегда, даже когда создавшее их приложение будет завершено, и ни одно другое приложение не сможет вытеснить их из памяти. Если пользователь решил послушать новый альбом Taylor Swift, то песни в наушниках перестанут играть только в двух случаях — кто-то нажмет кнопку «Стоп» или в устройстве сядет аккумулятор.

Это так называемый сервис переднего плана (foreground service), и его можно создать как из класса Service, так и из класса IntentService. Но есть небольшое условие: в панели уведомлений на протяжении всей работы сервиса должна быть соответствующая информация.

Создадим сейчас свой сервис, проигрывающий музыку. В этом нам поможет стандартный Android-класс MediaPlayer, который вполне справится с тем, чтобы открыть файл и бесконечно проигрывать его по кругу. К сожалению, для более сложных задач лучше поискать другие библиотеки — реализация MediaPlayer может отличаться в зависимости от вендора устройства, поэтому приложение может работать нестабильно.

Старт сервиса, как всегда, организуем через Intent, имя проигрываемого файла можно передать через его параметры.

Когда песня будет готова к проигрыванию, в сервисе сработает метод onPrepared из реализуемого интерфейса.

В методе OnStartCommand будет инициализирован музыкальный плеер и, самое главное, сконструирован объект, который будет демонстрироваться на панели уведомлений в течение всей работы сервиса. Это будет совершенно обычное уведомление, созданное с помощью класса Notification.

Tee service android что это. Смотреть фото Tee service android что это. Смотреть картинку Tee service android что это. Картинка про Tee service android что это. Фото Tee service android что это Рис. 3. Неубиваемое уведомление от привязанного сервиса

Скорее всего, пользовать захочет нажать на выводимое уведомление и попасть в Activity приложения, где можно будет поменять музыку. С этим справится PendingIntent, способный создать новый стек.

Теперь нужно связать сформированный стек и уведомление. А вывод информации о работающем сервисе выполняется методом startForeground с указанием уникального идентификатора.

Что же выбрать?

Итак, за два месяца мы с тобой довольно подробно поговорили о том, где же можно обработать данные для UI. Давай теперь кратко просуммируем то, что у нас есть для создания многопоточности в Android.

Потоки, созданные в Activity, подходят для сравнительно недлительных действий, результат которых важен только в момент жизни конкретного Activity. Их можно создать с помощью AsyncTask, AsyncTaskLoader или их аналогов — все зависит от того, как тебе будет удобней.

Сервисы существуют в приложении на равных правах с Activity, но не всегда в отдельном потоке. Они могут распараллелить задачи и выполнять громоздкие вычисления долгое время, пока на экране будут меняться Activity. IntentService завершит себя сам, когда выполнит все задачи, а Service будет висеть в фоне. Применяя сервисы, нужно быть внимательным, он может случайно оказаться в потоке UI или долго и без дела висеть в памяти, забирая ресурсы.

Заключение

Надеюсь, про многопоточность было сказано достаточно, чтобы ты понял ее необходимость и полезность. Вся ли это информация? Конечно, нет, Android — очень сложная ОС, которая постоянно развивается, и нельзя в двух статьях разобрать абсолютно все нюансы такой важной темы. В конце концов, главное — как приложение работает, а не то, как оно написано. Если будут вопросы, обязательно мне пиши. Удачи!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *