版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章Service与BroadcastReceiver本章介绍的主要内容是Android平台中的另外两个组件,服务Service和消息广播接收者BroadcastReceiver。Service是一种后台运行的Android组件,BroadcastReceiver是接受并响应广播通知的一类组件。本章将详细讲解Service的应用,并对相关的广播进行相应介绍。7.1Service简介Service是Android系统中的重要组件,它在后台运行,能在后台加载数据、运行程序等。下面主要介绍Service的开发过程及它的生命周期。7.1.1Service的特点和创建Service,即“服务”的意思,Service在Android系统中占有很重要的位置。它具有以下几个特点:无法与用户直接进行交互;必须由用户或其他程序启动;优先级介于前台应用和后台应用之间。那么我们什么时候会使用Service呢?例如,打开音乐播放之后,我们想要打开电子书,而又不希望音乐停止播放,此时就可以使用Service。1.定义ServiceAndroid提供了一个Service类。定义的时候,只要继承该类,就可以了。定义的语法如下:publicclassService1extendsService{
//自定义Service子类继承于Service@OverridepublicIBinderonBind(Intentintent){
//新建Service时系统自动覆盖onBind()方法,用于通信//TODOAuto-generatedmethodstubreturnnull;}}2.配置Service在AndroidManifest.xml文件中,配置该Service。有两种配置方法。第一种是显式配置,只需使用<Service…/>标签声明Service的名称。<Service…/>与其他组件标签(例如<activity></activity>)并列位于<application></application>标签内,为同一个应用程序所用。<serviceandroid:name="Service1">
<!--Service名称--></service>第二种是隐式配置,除了声明Service名称之外,还需要为Service配置<intent-filter…/>子标签。通过匹配Action属性,说明该Service可以被哪些Intent启动。<serviceandroid:name="Service1">
<intent-filter><!--设置Action属性-->
<actionandroid:name="android.service"/>
<!--默认Intent类型-->
<categoryandroid:name="ent.category.LAUNCHER"/>
</intent-filter></service>7.1.2Service生命周期Service和Activity一样都有自己的生命周期,都是一个从创建到销毁的过程。Service的启动方式有两种:context.startService()和context.bindService()。使用context.startService()启动Service,访问者与Service没有关联。即使访问者退出了,Service依然运行;使用context.bindService()启动Service,访问者与Service就绑定在一起。访问者一旦退出,Service就终止运行。7.1.2Service生命周期7.1.2Service生命周期方法名称方法说明startService(Intentservice)启动一个指定的应用程序服务stopService(Intentservice)停止一个指定的应用程序服务bindService(Intent,ServiceConnection,int)连接到一个应用程序服务,unbindService(ServiceConnectionconn)从应用程序断开连接服务onCreate()第一次创建Service时执行该方法onStartCommand()每一次客户端通过调用startService(Intentservice)显式地启动服务时执行该方法onBind()每一次客户端通过调用bindService(Intent,ServiceConnection,int)隐式地启动服务时执行该方法绑定onUnbind()每个客户端断开与服务的绑定时执行该方法。onDestory()当Service不再使用,并已经被删除时执行该方法7.2Service操作本节我们使用两种不同的方法启动Service,观察各自情况下,Service的生命周期以及状态变化。7.2.1使用context.startService()启动ServiceService一般由Activity启动。当Activity调用startService()方法启动Service时,如果Service还没有运行,则Android先调用onCreate(),然后调用onStartCommand()启动Service。Service进入运行状态。stopService的时候直接onDestroy()结束Service。如果是调用者自己直接退出,而没有调用stopService的话,Service会一直在后台运行。7.2.2使用context.bindService()启动Service调用context.bindSerivce()方法,绑定Service到Activity,依次执行onCreate()onBind(),Service被启动。调用context.unBindService()解除绑定,Srevice依次调用onUnbind()onDestroy()退出服务。当结束与Service绑定的Activity时,Service也会被终止。7.2.2使用context.bindService()启动Service7.3Service通信根据通信方式,Service可以分为两种类型:本地服务(LocalService)和远程服务(RemoteService)本地服务用于应用程序内部,远程服务用于Android系统内的应用程序之间。7.3.1本地服务通信当程序通过startService()和stopService()启动、关闭Service时,Service与访问者之间没有太多关系。因此无法进行通信和数据交换。如果Service和访问者之间需要进行通信,应该调用bindService()绑定Service与访问者,通信结束之后,再调用unBindSevice()解除绑定,退出Service。绑定Service之后,Service类中的Ibinderonbind(Intentintent)方法的返回值,将传递给在访问者类中声明的,ServiceConnection的onServiceConnected(ComponentNamename,Ibinderservice)方法中作参数。这样,访问者就可以通过Inbind对象,实现与Service之间的通信。交互关系如图7.6所示。7.掠3.探1本地挽服务呈通信7.熟3.蜘2远程楚服务而通信在An判dr焰oi础d系统毕中,恋各应刷用程如序都莫运行征在自京己的震进程仆中。拥进程饶之间继一般舒无法撇直接分进行古通信便或者限数据颤交换魔。An舌dr趋oi负d提供唤了AI迈DL工具稀来实浊现跨牵进程拴的通译信。AI施DL(An钉dr岩oi剂d跌In尝te熄rf硬ac隐e于De善fi兔ni陷ti骆on没L垮an久gu脸ag恒e)是职一种ID斗L接口哪定义彼语言((In称te喷rf郑ac宋e岂De顶fi咐ni级ti炒on薄L让an细gu剃ag录e)语高言,钱用于施生成史可以付在An书dr傲oi扰d设备而上两陷个进抱程之竞间进避行进尖程间亚通信姨(In益te见rn餐etPr粒oc弯es趟sCo蚕nn刊ec农ti鼻on钞I症PC)的季代码序。如竭果在恋一个敌进程延中(石例如Ac青ti泥vi绕ty)要面调用轻另一侵个进跟程中晨(例挑如Se活rv食ic广e)的女对象政,就羽可以银使用AI饼DL来实专现。1.创建.a泄id思l文件新建研一个铜项目My伪AI课DL,右滨击sr召c项目燃包名槽,单谜击ne猴w|陆Fi装le命令肾,弹胳出如器下对垃话框狠。新渡建文资件My蒙AI吼DL泥.a切id撇l,单眠击“芒确定然”按晌钮。2.定义袍接口生成蛙的接亏口包应含一谁个名暮为St泳ub的抽误象的征内部雷类,脾该类涨声明炼了所绸有.a屋id附l中描穗述的晕方法举。St简ub还定燥义了我少量池的辅像助方伞法,启尤其久是as欺In渡te眯rf遮ac拥e(修),通皆过它务或以织获得IB央in武de嫩r(当ap巾pl宜ic劲at趟io芽nC帜on龄te部xt枣.b久in秀dS鹊er虫vi警ce迫()成功尖调用甚时传拘递到竿客户售端的on向Se高rv精ic挨eC积on主ne窄ct咐ed态()),定并且幼返回财用于超调用IP两C方法寨的接劫口实槽例。//项目槐包名pa隔ck暗ag眼e推co谎m.友ex舞am慰pl军e.舟my蹦ai役dl演;//定义茅接口in沃te限rf哲ac软e拉My氧AI锈DL愤{St握ri蹄ng鞋g言et受Va某lu灯e(进);}7.毫4系统Se欧rv得ic智e不管这是智混能手蛮机还堡是非到智能锡手机晨,An惭dr然oi腔d作为翅手机碰操作古系统祥中一岛员,律在其秋系统Se突rv椅ic笑e中提阶供了竿最基葱本的材打电锅话、泰发短按信的被服务布供用要户使件用。平这些车服务佛主要永通过ge同tS息ys旁te块mS维er赠vi诞ce楼(S起tr乳in唱g核se惑rv工ic斯eN很am榴e)方法衬获得颈。下锡面我缺们来秩学习抚一些肥常用巨的系暴统Se乘rv灵ic黄e。7.半4.按1电话招管理驴器Te龟le纸ph蜻on嫁yM太an黑ag模erTe璃le撕ph冈on摧yM福an也ag块er是An脑dr川oi完d提供箭的系蹦统服腾务之夕一。盛通关痰它可捆以获愿取手殊机的则各种采相关象信息刷,例水如设施备ID号、SI这M卡号液等等军。该Se厘rv伞ic纯e使用富流程蜘如下蜻:1.获取TE皮LE狮PH封ON倒Y_毙SE欠RV捞IC馒E系统边服务使用瞒该Se警rv耐ic掏e之前支,首液先需怕要获阔取系攀统服霸务。禁语法绳如下兴:Te适le对ph剩on裹yM森an矛ag雨er竭t悦el致ep求ho望ny刺Ma棒na共ge吨r;//声明te别le捕ph姓on桌yM携an队ag耀er对象te窄le显ph占on颈yM专an洁ag舍er委=瓜(载Te迎le馋ph胸on谨yM碰an史ag限er偷)g献et声Sy闷st单em矿Se户rv滤ic纠e(渐TE使LE革PH摊ON蓄Y_忽SE伏RV图IC瘦E)乳;//获取TE额LE核PH陪ON财Y_箭SE依RV东IC清E系统卡服务因为ge牲tS爽ys继te诉mS极er成vi筑ce请(St脱ri廉ngna赛me惜)方法巧返回锯值类演型是Ob腐je绳ct,所此以需退要强己制转肃换类土型为Te娱le陆ph以on晚yM姨an锡ag委er类。2.获取Te挣le悼ph歇on婆yM稼an渔ag揭er相关偏属性通过Te闭le界ph起on泻yM寺an伪ag桨er对象宴,用疲户可毅以获凤取An冤dr浮oi皮d关于智电话恳的多睛项属共性信踩息,泥如电坟话类粪型、翻电话掏号码纱等。市其语抄法形限式如酷下:St辨ri检ng环p识ho牛ne凉Ty卡pe去=始"呢ph姻on煌eT妨yp播e"随+涛t烛el选ep铅ho味ny搞Ma呼na井ge眠r.怨ge母tP拨ho筒ne乒Ty蒜pe招()歼;//调用企对应劈燕方法,获得蛛相关抽信息方法名称返回值类型返回值说明getPhonyType()int返回电话类型getLineNumber()String返回电话号码getDeviceId()String返回设备IDgetSimNumber()String返回sim卡号getNetworkOperatorName()String返回网络注册运营商名称3.调用Te危le童ph怕on虫yM吊an生ag傅er相关弄方法Te摘le扔ph恼on掀yM筐an水ag肥er类中诵,提男供了俗与电犹话相竭关的化方法忌。方法名称方法说明publicbooleanisNetworkRoaming()如果设备漫游在目前网络,返回true。publicvoidlisten(PhoneStateListenerlistener,intevents)注册监听对象,响应电话状态改变事件。7.庭4.死2短信习管理僵器Sm暑sM恩an部ag狱erSm戏sM笋an馅ag绢er是An液dr睛oi山d提供档的与黑短信宴相关轧的系寒统服榜务。处该Se甩rv急ic幻玉e使用殊流程红如下牺:1.获取Sm胳sM臣an袜ag床er系统蹲服务使用桶该Se批rv友ic姜e之前校,首酸先需言要获谋取Sm迎sM仍an快ag荷er系统屯服务档。语敏法如劳下:sm瓜sM坏an范ag告er跌=效S亿ms惊Ma著na互ge流r.巧ge刮tD椒ef忠au仇lt而()却;2.调用Sm爹sM耕an辽ag吊er相关率方法Sm翠sM性an威ag仿er类中文,提损供了都与短锻信相误关的乔方法庙。方法名称方法说明publicArrayList<String>divideMessage(Stringtext)当短信超过SMS消息的最大长度时,将短信分割为几块。publicvoidsendDataMessage(StringdestinationAddress,StringscAddress,shortdestinationPort,byte[]data,PendingIntentsentIntent,PendingIntentdeliveryIntent)通过短信,发送数据到一个特定的应用程序端publicvoidsendTextMessage(StringdestinationAddress,StringscAddress,Stringtext,PendingIntentsentIntent,PendingIntentdeliveryIntent):发送一个文本短信。publicvoidsendMultipartTextMessage(StringdestinationAddress,StringscAddress,ArrayList<String>parts,ArrayList<PendingIntent>sentIntents,ArrayList<PendingIntent>deliveryIntents)发送多条文字短信。3.声明Pe久nd染in拆gI绑nt蜜en锤t对象在以闯上两聚个方涛法中举,都登使用诸到Pe储nd蒜in笨gI淡nt篮en派t参数贤。因泪此在障调用Sm词sM响an纤ag豪er相关吸方法鼓之前量,需信要声明口一个Pe旱nd印in饶gI诸nt校en龟t对象帜。Pe悠nd否in潮gI胀nt勇en梦t这个碎类用道于处俩理即烦将发述生的谊事情框。要惕得到铅一个pe与nd葛in筐gI从nt命en买t对象股,使衰用方播法类护的静虽态方幕法ge选tA雹ct美iv舱it羽y(退Co煮nt纷ex仇t,络i坡nt咐,骄In端te屈nt泰,辜in摘t)、ge鸟tB嫂ro饭ad倍ca棵st悦(C轧on妨te耗xt膛,樱in还t,秘I虽nt压en皱t,茅i件nt佳)、ge暴tS突er挨vi疗ce鼻(C裤on宋te盟xt寄,观in誓t,骡I鲜nt盒en争t,横i遣nt茄),分梁别对筛应着In壤te扑nt的3个行核为:蔑跳转术到一站个Act面iv杂it亏y组件夸、打倚开一偿个广萝播组割件、嫌打开谨一个舞服务孟组件绒。Pe若nd喜in响gI虾nt化en勿t琴pI椒nt耍en颠t模=军Pe祝nd巷in责gI衔nt层en灯t.书ge涛tA参ct昆iv岁it和y//获得Pe逐nd漆in亦gI尿nt缓en蜓t实例颜对象(c羞on难te铲xt眯,//当前亿上下撤文环单境re祝qu域es移tC铺od康e,//请求节码in纹te捞nt制,//启动定意图fl抢ag阳s)惜;//意图钻标志7.填4.膊3音频都管理炊器Au堂di舟oM姻an臂ag施erAu伴di牌oM因an讲ag祖er是用块来控略制手浓机铃禁声和注音量盏的系兆统服亚务。乎该Se个rv哲ic职e使用楚流程捞如下盐:1.获取AU被DI减O_总SE沉RV偶IC振E服务使用框该Se领rv阵ic温e之前竭,首弄先需柳要获箭取AU迈DI峰O_域SE蹈RV器IC输E服务轻。语染法如嚷下:Au熄di麦oM染an璃ag牙er剪a滩ud放io乏Ma麻na江ge化r;//声明Au叔di辛oM重an丛ag锅er对象au撕di制oM鸟an俗ag徒er狗=衬(纠Au挂di蚂oM旧an骗ag动er灵)g闯et破Sy惑st轧em梨Se忍rv从ic贸e(胡Co滨nt赞ex座t.捕AU激DI称O_锹SE败RV沾IC械E)泛;//获得AU穿DI只O_捡SE滔RV棋IC双E系统怠服务因为ge闹tS低ys暗te屠mS凳er墨vi参ce觉(St咐ri睁ngna样me技)方法关返回蜻值类吸型是Ob导je化ct,所东以需件要强摆制转珠换类增型为Au竿di奥oM牙an站ag附er类。2.调用Au富di冻oM叔an内ag箭er相关牢方法获取还了Au蝴di军oM啦an孙ag倘er实例别对象出后,仿我们壮就可焦以调芝用它盖的相同关方辫法。Au滋di问oM着an亩ag营er提供痒了一稀系列抛控制父手机做音量凳的方电法。方法名称方法说明adjustStreamVolume(intstreamType,intdirection,intflags)调整手机指定类型的声音。setMode(intmode)设置声音模式setRingerMode(intringerMode)设置铃声模式setStreamMute(intstreamType,booleanstate)设置静音模式setStreamVolume(intstreamType,intindex,intflags)设定手机指定类型的音量值streamType:指定声音类型direction:控制声音的大小flags:调整声音的标志7.拦4.警4振动睁器Vi撒br识at即orAn哈dr载oi边d手机移中的缩慧振动赌由Vi茧br槐at捕or实现醉。在与缴用户扫交互姐时,或常常扒会用仆到振样动功栗能,寻尤其次在游抗戏中拢,应两用广鞠泛,膛比如灭爆炸扛,碰呜撞等胳。1.获取VI疲BR嘴AT锈OR印_S龙ER熟VI装CE系统茫服务使用逮该Se蚕rv障ic曲e之前坏,首姐先需堆要获触取VI奸BR辟AT夏OR代_S润ER妻VI趋CE系统芽服务仙。语视法如惨下:Vi微br升at揪or染v著ib自ra寒to抚r;//声明Vi枯br旷at层or对象vi处br夫at燥or所=询(歉Vi雕br娘at仍or脸)g新et穗Sy剪st泽em稼Se允rv舟ic从e(友Co数nt报ex脆t.催VI手BR纵AT新OR可_S鼓ER种VI绞CE门);//获得Vi坡br短at狠or系统娱服务因为ge唐tS雾ys夫te廊mS敲er池vi稿ce羞(St损ri淘ngna督me券)方法引返回礼值类民型是Ob底je扔ct,所瓦以需选要强号制转淹换类狐型为Vi绢br情at宽or类。2.调用Vi寇br崇at尸or相关席方法获取箭了Vi酒br乳at志or实例纳对象窝后,夫我们阀就可凑以调怒用它久的相拨关方轰法。Vi辟br兽at骆or比较控简单据,只柄提供城了少姑量的关方法水。方法名称方法说明voidcancel()关闭振动booleanhasVibrator()检测是否有振动硬件voidvibrate(longmilliseconds)在一定的时间内振动7.师5广播画接收传者Br油oa街dc驳as驾tR央ec邮ei职ve座r在An睛dr戒oi枣d中,董广播Br尺oa括dc锐as膝t是一括种广蜓泛运德用在盐应用叛程序捐之间乘的用渡于传饶送消画息的魄机制章。而Br宾oa繁dc熟as烧tR炼ec集ei邀ve概r是用锈来过手滤接杂收并艘响应Br缘瑞oa虎dc箭as丘t的一瓶类组快件。凶它可验以监爆听系诞统全俱局的夺广播摸消息蔬,非暑常方掀便的友实现泰系统栽中不猴同组珍件之尊间通威信。7.闹5.合1开发Br权oa恒dc自as船tR乘ec桑ei笋ve下rBr双oa街dc汁as职tR耀ec艇ei迹ve浮r的运促行机帽理非授常简老单。妇开发江过程宪如下作:开发Br炊oa棋dc纺as题tR养ec和ei句ve妙r的子掘类,奶重写碌其中田的on森Re隆ce撑iv杆e(鼓)方法福;注册Br手oa傻dc馒as闯tR鹿ec乌ei冲ve肆r对象林;将需节要广付播的须消息明封装秤到In柳te陈nt中,恼然后尼调用脊方法匙发送彼出去喜;通过In份te肆nt鲁Fi文lt摊er对象尝过滤In寨te径nt,处森理与私其匹滥配的撤广播棍。1.注册Br璃oa拼dc津as购tR袍ec勿ei苍ve荐r与其规他组做件相杂同,Br雁oa垦dc案as旨tR舞ec礼ei贝ve测r在使压用之槐前,些也需苗要在An亡dr艇oi港dM架an袭if姥es决t.沿xm跳l中注玩册——静态肌注册柳。静衣态注洪册的猎特点奖是,犯不管我改应城用程霸序是连否处浸于活危动状描态,巡寿都会象进行双监听装。注粒册Br武oa恩dc抄as痰tR请ec衬ei弓ve尖r使用<r踪蝶ec编ei葱ve滋r>旦</卷re撤ce腿iv形er出>标签激。然疯后通灿过<i岩nt惧en签t-磨fi把lt至er猎><昆/i另nt烛en勉t-蜜fi才lt迈er笨>标签柴设置活过滤姐条件趣。<r洽ec抹ei罪ve沿r>森</鹅re彩ce份iv宴er裂>与其使他组世件(舍例如<a狗ct扛iv顽it包y>苍</勇ac辣ti添vi苹ty肥>)并妻列位枯于<a届pp下li套ca豪ti循on榆><米/a乒pp悬li垃ca凝ti伴on抹>标签鸟内,南为同台一个伸应用薄程序停所用牺。语沸法如蚊下:<r拍ec歇ei晋ve型r挽an漏dr绳oi歌d:荷na舟me加="罩"锋><!念--广播捧接收薄者名伶称--雾><i涂nt舞en耕t-袭fi泄lt斧er消><a蓝ct起io枪n命an深dr上oi牌d:担na林me螺="慰"承/灶><!仿--绞I面nt辉en减t-落fi像lt垃er过滤始条件--宴></雕in场te星nt涂-f店il静te沃r></容re弹ce背iv奥er吊>2.发送传广播An粮dr稳oi们d系统侨提供启了Co知nt拌ex露t.诸se嘴nd缝Br昆oa蓄dc涨as昏t(笼)和Co盛nt街ex挣t.捏se稳nd陕Or舟de死re削dB雾ro链ad籍ca醒st备()两种志方法舌发送饰广播榴或有妨序广苹播,砌供Br漆oa看dc由as场tR形ec撇ei究ve眼r接收吨并处脆理。Co觉nt俯ex技t.针se丙nd私Br至oa匹dc污as上t(之)发送优的广谣播,溉所有浅满足巴条件快的Br绵oa逗dc荣as乎tR搁ec找ei违ve况r都会暴执行析其on括Re左ce间iv休e(看)方法揉来处你理响幻玉应。Co钉nt印ex上t.卧se血nd置Or裁de站re遭dB矮ro忽ad灵ca皆st发送分的有惜序广掩播。界会根团据Br较oa梦dc扰as赠tR互ec昨ei庭ve腐r注册棉时In动te鸣nt育Fi弟lt箩er的优脑先级貌顺序节来执跳行on潜Re坟ce奶iv蚁e(京)方法花。优拉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于抚养权的离婚协议
- 2.3《林黛玉进贾府》【中职专用】高一语文(高教版2023基础模块上册)
- 湖南省郴州市第六中学观山学校2023-2024学年七年级上学期第三次月考生物试题(原卷版)-A4
- 2023年地震数据采集系统项目筹资方案
- PEP人教版小学六年级上册Unit6 How do you feel B Lets try Lets talk
- 《知识与个人知识》课件
- 电工(初级工)测试题及参考答案
- 山东省济宁市微山县2023-2024学年八年级上学期期末考试数学试卷(含答案)
- 养老院老人入住资料制度
- 养老院老人安全管理制度
- 学校心理咨询知情同意书
- PET单词表完整版
- 脱硫除尘常用备品备件清单
- 3初步业务活动工作底稿-业务承接(一般项目适用)
- 青少年烟草流行调查问卷
- 37-风湿病科--大偻(强直性脊柱炎)中医诊疗方案(2021年版)
- 阀门试验记录填写范本
- 失效分析的现状与发展趋势
- 外研版三起点小学英语四年级上册1-10模块教学反思
- 《魏公子列传》知识点
- QGDW 10272-2018 大型电厂接入系统设计内容深度规定
评论
0/150
提交评论