Водич за Андроид услуге: Како покренути апликацију у позадини?

Овај водич за Андроид услуге вам помаже да разумете како да обављате операције у позадини, попут репродукције музике, нема приложен кориснички интерфејс

Често користећи више апликација на паметном телефону, можда ћете желети да пређете са једне апликације на другу, али и да обезбедите да све ваше апликације остану активне у позадини. То нису ништа друго до услуге које нуди . Дакле, овај чланак у водичу за Андроид услуге ће вам помоћи да разумете како се ради са услугама.

Обрадићу следеће теме:





Шта су Андроид услуге?

Услуга је у основи процес. Андроид услуга је компонента која ради у позадини ради извођењадуготрајне операције без интеракције са корисником и функционише чак и ако је апликација уништена.Друга компонента апликације може да покрене услугу и она наставља да ради у позадини чак и ако се пребаците на другу апликацију.

Поред тога, компонента се може везати за услугу како би са њом ступила у интеракцију и такође извршила међупроцесну комуникацију.



Белешка: Андроид.апп.Сервице је подкласа класе ЦонтектВраппер, а Андроид услуга није нит или засебан процес.

Животни циклус услуга Андроид

Животни циклус Андроид услуга може имати два облика услуга. Животни циклус услуге следи два различита пута, и то:

  1. Започео
  2. Везани

Започео



Услуга се покреће када компонента апликације позове стартСервице () метода. Једном покренут, услуга може радити у позадини неограничено, чак и ако је компонента која је одговорна за покретање уништена. Зауставља се коришћењем стопСервице () метода. Услуга се такође може зауставити позивањем стопСелф () метода.

Везани

Услуга је везана када се компонента апликације на њу веже позивањем биндСервице () . Везана услуга нуди интерфејс клијент-сервер који омогућава компонентама да комуницирају са услугом, шаљу захтеве и добијају резултате. Обрађује кроз међупроцесну комуникацију (ИПЦ). Клијент може да одвеже услугу позивањем унбиндСервице () метода.

Животни циклус Андроид услуга - Водич за Андроид услуге - Едурека

Прелазећи на следећи одељак овог чланка о Андроид услугама, разговарајмо о различитимметоде под услужном класом.

Водич за Андроид услуге: Методе

Постоји неколико метода помоћу којих можете лако извршити операције на било којој апликацији. Неки од њих су:

МетодОпис
онСтартЦомманд ()

Овај метод се позива када било која друга компонента, попут рецимо неке активности, позива покретање услуге позивом стартСервице () .

Ваша је одговорност да зауставите услугу када се одговарајући посао изврши коришћењем стопСелф () или стопСервице () методе.

унбинд ()

Позива овај метод када се друга компонента жели повезати са услугом позивањем биндСервице () .

Да бисте то применили, морате обезбедити интерфејс који клијенти користе да би комуницирали са услугом. Враћа ИБиндер објект. Ако не желите да дозволите везивање, вратите се нула .

онУнбинд ()

Систем позива овај метод када су сви клијенти искључени са одређеног интерфејса који је услуга објавила.

онРебинд ()

Позива овај метод када су нови клијенти повезани са услугом након што је претходно обавештен да су сви искључени онУнбинд (Намера) .

онЦреате ()

Систем позива овај метод када се услуга креира први пут онСтартЦомманд () или унбинд () . Потребно је извршити једнократно постављање.

онДестрои ()

Овај метод се позива када се услуга више не користи и уништава се. Ваша услуга би ово требало да примени како би очистила све ресурсе као што су нити, регистровани слушаоци, пријемници итд.

Код скелета

јавна класа МаинАцтивити проширује активност {привате ТектВиев тектВиев привате БроадцастРецеивер рецеивер = нев БроадцастРецеивер () {@Оверриде публиц воид онРецеиве (Цонтект цонтект, Интент интент) {Бундле бундле = интент.гетЕктрас () иф (бундле! = нулл) {Стринг стринг = бундле.гетСтринг (ДовнлоадСервице.ФИЛЕПАТХ) инт ресултЦоде = бундле.гетИнт (ДовнлоадСервице.РЕСУЛТ) иф (ресултЦоде == РЕСУЛТ_ОК) {Тоаст.макеТект (МаинАцтивити.тхис, 'Преузимање завршено. Преузми УРИ:' + стринг, Тоаст.ЛЕНГТХ_ЛОНГ) .схов () тектВиев.сетТект ('Преузимање завршено')} елсе {Тоаст.макеТект (МаинАцтивити.тхис, 'Преузимање није успело', Тоаст.ЛЕНГТХ_ЛОНГ) .схов () тектВиев.сетТект ('Преузимање није успело')}}}}} @Оверриде јавна празнина онЦреате (Бундле саведИнстанцеСтате) {супер.онЦреате (саведИнстанцеСтате) сетЦонтентВиев (Р.лаиоут.ацтивити_маин) тектВиев = (ТектВиев) финдВиевБиИд (Р.ид.статус)} @Оверриде протецтед воид онРесуме () {супер.он. ) регистерРецеивер (пријемник, нови ИнтентФилтер (ДовнлоадСервице.НОТИФИЦАТИОН))} @Оверриде заштићена воид онПаусе () {супер.онПаусе () унрегистерРецеивер (пријемник)} јавна воид онЦлицк (приказ погледа) {Намера намере = нова намера (тхис, ДовнлоадСервице.цласс) // додајте информацију за услугу коју датотеку треба преузети и куда складиште интент.путЕктра (ДовнлоадСервице.ФИЛЕНАМЕ, 'индек.хтмл') интент.путЕктра (ДовнлоадСервице.УРЛ, 'ввв.едурека.цо') стартСервице (намера) тектВиев.сетТект ('Услуга је започета')}}

У овом примеру можете видети методе попут онЦреате () , онРесуме () , онПаусе () . Ове методе чине структуру Услуга у Андроиду.

Сада ћемо доћи до практичног дела овог водича за Андроид услуге, да видимокако створити услугу и руковати њом.

Демо

Погледајмо како да пуштамо музику у позадини. Да бих то урадио, користићу Андриод Студио .

Корак 1

Направите нови празан пројекат. Именујте свој пројекат и кликните на директоријум Јава и кликните на Основна делатност . Прво додајте МедиаПлаиер тако да можете да увезете детаље о плејеру попут старта, подесите петљу и тако даље.

пакет цом.екампле.мидемоапплицатион увоз андроидк.аппцомпат.апп.АппЦомпатАцтивити јавни час МаинАцтивити проширује АппЦомпатАцтивити {@Оверриде протецтед воид онЦреате (Бундле саведИнстанцеСтате) {супер.онЦреате (саведИнстанцеСтате) сетЦонтентВиев (Р.лаиоут.ацтивити_маин) МедиаПлаиер играч = МедиаПлаиер.цреате (ово, Сеттингс.Систем.ДЕФАУЛТ_АЛАРМ_АЛЕРТ_УРИ) плаиер.сетЛоопинг (труе) плаиер.старт ()}}

Напомена: Ако га користите први пут, не заборавите да омогућите БИОС. То можете учинити поновним покретањем система.

Мораћете да додате виртуелни уређај. Само кликните на Отворите АВД менаџер.

Изаберите уређај по вашем избору и спремни сте!

Ово ће се покренути само када је екран активан, али да би ова апликација радила чак и у позадини, потребно је да додате још неколико редова кода у ацтивити_маин.кмл датотека.

Корак 2

Једном када покренете одговарајући код, моћи ћете да покренете апликацију и моћи ћете да репродукујете музику у позадини, тј. Ако се отвори било која друга апликација, овај звук ће се и даље репродуковати.

Да видимо како то може да се уради.

  • Направите другу класу у директоријуму Јава и назовите је. Ево, ја сам то назвао „ МиСервице '.
  • Ова класа проширује класу Услуга.
  • Када стекнете методе класе услуге, примените их кликом алт + Ентер.
  • После овога морате заменити методе. Дакле, кликните десним тастером миша на прозор да бисте добили опције.
  • Генеришите методе замене, изаберите онСтартЦомманд () , и ОнДестрои ().
  • Уредите онСтартЦомманд () методе додавањем следећег кода .:
МедиаПлаиер плаиер = МедиаПлаиер.цреате (ово, Сеттингс.Систем.ДЕФАУЛТ_АЛАРМ_АЛЕРТ_УРИ) плаиер.сетЛоопинг (труе) плаиер.старт ()

Белешка: Избришите овај код у Основна делатност.

  • Ово ће довести до грешке која тражи да уклоните изјаву. Дакле, уклоните изјаву ретурн и прогласите МедиаПлаиер приватним методом и вратите се СТАРТ_СТИЦКИ . Ово ће вратити статус покретања.
  • Додати плаиер.стоп () у онДестрои () метода.

3. корак

Иди на говедина и идите на изгледе, кликните на андроид_маин.кмл да бисте добили КСМЛ датотеку апликације.

  • Уклоните ТектВиев и замените га ЛинеарЛаиоут и додајте дугмад. Додајте одговарајући код.
<ЛинеарЛаиоут андроид: оријентација= 'вертикално' андроид: лаиоут_видтх= 'матцх_парент' андроид: лаиоут_хеигхт= 'садржај омота' андроид: лаиоут_центерВертицал= 'тачно' алата: игнорисати= 'МиссингЦонстраинтс'><Дугме андроид: ид= '@ + ид / буттонСтарт' андроид: текст= 'Покрени услугу' андроид: лаиоут_видтх= 'садржај омота' андроид: лаиоут_хеигхт= 'матцх_парент'/><Дугме андроид: ид= '@ + ид / буттонСтоп' андроид: текст= 'Заустави услугу' андроид: лаиоут_видтх= 'садржај омота' андроид: лаиоут_хеигхт= 'матцх_парент'/>ЛинеарЛаиоут>
  • Када то урадите, вратите се на Основна делатност класе и додајте одговарајући код како бисте повезали КСМЛ датотеку и МиСервицеЦласс.
пакет цом.екампле.невпројецт импорт андроидк.аппцомпат.апп.АппЦомпатАцтивити јавна класа МаинАцтивити проширује АппЦомпатАцтивити имплементира Виев.ОнЦлицкЛистенер {привате Буттон старт, стоп @Оверриде протецтед воид онЦреате (Бундле саведИнстанцеСтате) {супер.онЦреате (саведИнстанцеСтатеи сет) Р. .ацтивити_маин) старт = (Буттон) финдВиевБиИд (Р.ид.буттонСтарт) стоп = (Буттон) финдВиевБиИд (Р.ид.буттонСтоп) старт.сетОнЦлицкЛистенер (тхис) стоп.сетОнЦлицкЛистенер (тхис)} @Оверриде публиц воид онЦлицк (Виев виев ) {иф (виев == старт) {стартСервице (нев Интент (тхис, МиСервицеЦласс.цласс))} елсе иф (виев == стоп) {стопСервице (нев Интент (тхис, МиСервицеЦласс.цласс))}}}

4. корак

Кад завршите са повезивањем класа, покренимо код.

Напомена: Додајте назив класе услуге у датотеку АндроидМанифиест.кмл.

учење ссиса корак по корак

Даље, покренимо код.

Једном када покренете услугу, она ће радити у позадини, чак и ако се отвори друга апликација. Услугу можете покренути или зауставити кликом на дугмад.

Ово је једноставна демонстрација у којој сте научили како да радите са Андроид услугама.

Дакле, овим смо дошли до краја овог чланка о „Водичу за Андроид услуге“.Надам се да су вам јасне теме које су обрађене на овом блогу.

Сада када сте прошли кроз наш блог Водич за Андроид услуге, можете да погледате Едурека'с за брзо започињање учења.

Имате ли питања? Не заборавите да их поменете у коментарима овог блога „Водич за Андроид услуге“. Јавићемо вам се.