




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
外文原文AndroidapplicationsarewrittenintheJavaprogramminglanguage.TheAndroidSDKtoolscompilethecodealongwithanydataandresourcefilesintoanAndroidpackage,anarchivefilewithan.apksuffix.Allthecodeinasingle.apkfileisconsideredtobeoneapplicationandisthefilethatAndroid-powereddevicesusetoinstalltheapplication.Onceinstalledonadevice,eachAndroidapplicationlivesinitsownsecuritysandbox:TheAndroidoperatingsystemisamulti-userLinuxsysteminwhicheachapplicationisadifferentuser.Bydefault,thesystemassignseachapplicationauniqueLinuxuserID(theIDisusedonlybythesystemandisunknowntotheapplication).ThesystemsetspermissionsforallthefilesinanapplicationsothatonlytheuserIDassignedtothatapplicationcanaccessthem.Eachprocesshasitsownvirtualmachine(VM),soanapplicationscoderunsinisolationfromotherapplications.Bydefault,everyapplicationrunsinitsownLinuxprocess.Androidstartstheprocesswhenanyoftheapplicationscomponentsneedtobeexecuted,thenshutsdowntheprocesswhenitsnolongerneededorwhenthesystemmustrecovermemoryforotherapplications.Inthisway,theAndroidsystemimplementstheprincipleofleastprivilege.Thatis,eachapplication,bydefault,hasaccessonlytothecomponentsthatitrequirestodoitsworkandnomore.Thiscreatesaverysecureenvironmentinwhichanapplicationcannotaccesspartsofthesystemforwhichitisnotgivenpermission.However,therearewaysforanapplicationtosharedatawithotherapplicationsandforanapplicationtoaccesssystemservices:ItspossibletoarrangefortwoapplicationstosharethesameLinuxuserID,inwhichcasetheyareabletoaccesseachothersfiles.Toconservesystemresources,applicationswiththesameuserIDcanalsoarrangetoruninthesameLinuxprocessandsharethesameVM(theapplicationsmustalsobesignedwiththesamecertificate).Anapplicationcanrequestpermissiontoaccessdevicedatasuchastheuserscontacts,SMSmessages,themountablestorage(SDcard),camera,Bluetooth,andmore.Allapplicationpermissionsmustbegrantedbytheuseratinstalltime.ThatcoversthebasicsregardinghowanAndroidapplicationexistswithinthesystem.Therestofthisdocumentintroducesyouto:Thecoreframeworkcomponentsthatdefineyourapplication.Themanifestfileinwhichyoudeclarecomponentsandrequireddevicefeaturesforyourapplication.Resourcesthatareseparatefromtheapplicationcodeandallowyourapplicationtogracefullyoptimizeitsbehaviorforavarietyofdeviceconfigurations.ApplicationComponentsApplicationcomponentsaretheessentialbuildingblocksofanAndroidapplication.Eachcomponentisadifferentpointthroughwhichthesystemcanenteryourapplication.Notallcomponentsareactualentrypointsfortheuserandsomedependoneachother,buteachoneexistsasitsownentityandplaysaspecificroleeachoneisauniquebuildingblockthathelpsdefineyourapplicationsoverallbehavior.Therearefourdifferenttypesofapplicationcomponents.Eachtypeservesadistinctpurposeandhasadistinctlifecyclethatdefineshowthecomponentiscreatedanddestroyed.Herearethefourtypesofapplicationcomponents:ActivitiesAnactivityrepresentsasinglescreenwithauserinterface.Forexample,anemailapplicationmighthaveoneactivitythatshowsalistofnewemails,anotheractivitytocomposeanemail,andanotheractivityforreadingemails.Althoughtheactivitiesworktogethertoformacohesiveuserexperienceintheemailapplication,eachoneisindependentoftheothers.Assuch,adifferentapplicationcanstartanyoneoftheseactivities(iftheemailapplicationallowsit).Forexample,acameraapplicationcanstarttheactivityintheemailapplicationthatcomposesnewmail,inorderfortheusertoshareapicture.AnactivityisimplementedasasubclassofActivityandyoucanlearnmoreaboutitintheActivitiesdeveloperguide.ServicesAserviceisacomponentthatrunsinthebackgroundtoperformlong-runningoperationsortoperformworkforremoteprocesses.Aservicedoesnotprovideauserinterface.Forexample,aservicemightplaymusicinthebackgroundwhiletheuserisinadifferentapplication,oritmightfetchdataoverthenetworkwithoutblockinguserinteractionwithanactivity.Anothercomponent,suchasanactivity,canstarttheserviceandletitrunorbindtoitinordertointeractwithit.AserviceisimplementedasasubclassofServiceandyoucanlearnmoreaboutitintheServicesdeveloperguide.ContentprovidersAcontentprovidermanagesasharedsetofapplicationdata.Youcanstorethedatainthefilesystem,anSQLitedatabase,ontheweb,oranyotherpersistentstoragelocationyourapplicationcanaccess.Throughthecontentprovider,otherapplicationscanqueryorevenmodifythedata(ifthecontentproviderallowsit).Forexample,theAndroidsystemprovidesacontentproviderthatmanagestheuserscontactinformation.Assuch,anyapplicationwiththeproperpermissionscanquerypartofthecontentprovider(suchasContactsContract.Data)toreadandwriteinformationaboutaparticularperson.Contentprovidersarealsousefulforreadingandwritingdatathatisprivatetoyourapplicationandnotshared.Forexample,theNotePadsampleapplicationusesacontentprovidertosavenotes.AcontentproviderisimplementedasasubclassofContentProviderandmustimplementastandardsetofAPIsthatenableotherapplicationstoperformtransactions.Formoreinformation,seetheContentProvidersdeveloperguide.BroadcastreceiversAbroadcastreceiverisacomponentthatrespondstosystem-widebroadcastannouncements.Manybroadcastsoriginatefromthesystemforexample,abroadcastannouncingthatthescreenhasturnedoff,thebatteryislow,orapicturewascaptured.Applicationscanalsoinitiatebroadcastsforexample,toletotherapplicationsknowthatsomedatahasbeendownloadedtothedeviceandisavailableforthemtouse.Althoughbroadcastreceiversdontdisplayauserinterface,theymaycreateastatusbarnotificationtoalerttheuserwhenabroadcasteventoccurs.Morecommonly,though,abroadcastreceiverisjustagatewaytoothercomponentsandisintendedtodoaveryminimalamountofwork.Forinstance,itmightinitiateaservicetoperformsomeworkbasedontheevent.AbroadcastreceiverisimplementedasasubclassofBroadcastReceiverandeachbroadcastisdeliveredasanIntentobject.Formoreinformation,seetheBroadcastReceiverclass.AuniqueaspectoftheAndroidsystemdesignisthatanyapplicationcanstartanotherapplicationscomponent.Forexample,ifyouwanttheusertocaptureaphotowiththedevicecamera,theresprobablyanotherapplicationthatdoesthatandyourapplicationcanuseit,insteadofdevelopinganactivitytocaptureaphotoyourself.Youdontneedtoincorporateorevenlinktothecodefromthecameraapplication.Instead,youcansimplystarttheactivityinthecameraapplicationthatcapturesaphoto.Whencomplete,thephotoisevenreturnedtoyourapplicationsoyoucanuseit.Totheuser,itseemsasifthecameraisactuallyapartofyourapplication.Whenthesystemstartsacomponent,itstartstheprocessforthatapplication(ifitsnotalreadyrunning)andinstantiatestheclassesneededforthecomponent.Forexample,ifyourapplicationstartstheactivityinthecameraapplicationthatcapturesaphoto,thatactivityrunsintheprocessthatbelongstothecameraapplication,notinyourapplicationsprocess.Therefore,unlikeapplicationsonmostothersystems,Androidapplicationsdonthaveasingleentrypoint(theresnomain()function,forexample).Becausethesystemrunseachapplicationinaseparateprocesswithfilepermissionsthatrestrictaccesstootherapplications,yourapplicationcannotdirectlyactivateacomponentfromanotherapplication.TheAndroidsystem,however,can.So,toactivateacomponentinanotherapplication,youmustdeliveramessagetothesystemthatspecifiesyourintenttostartaparticularcomponent.Thesystemthenactivatesthecomponentforyou.ActivatingComponentsThreeofthefourcomponenttypesactivities,services,andbroadcastreceiversareactivatedbyanasynchronousmessagecalledanintent.Intentsbindindividualcomponentstoeachotheratruntime(youcanthinkofthemasthemessengersthatrequestanactionfromothercomponents),whetherthecomponentbelongstoyourapplicationoranother.AnintentiscreatedwithanIntentobject,whichdefinesamessagetoactivateeitheraspecificcomponentoraspecifictypeofcomponentanintentcanbeeitherexplicitorimplicit,respectively.Foractivitiesandservices,anintentdefinestheactiontoperform(forexample,tovieworsendsomething)andmayspecifytheURIofthedatatoacton(amongotherthingsthatthecomponentbeingstartedmightneedtoknow).Forexample,anintentmightconveyarequestforanactivitytoshowanimageortoopenawebpage.Insomecases,youcanstartanactivitytoreceivearesult,inwhichcase,theactivityalsoreturnstheresultinanIntent(forexample,youcanissueanintenttolettheuserpickapersonalcontactandhaveitreturnedtoyouthereturnintentincludesaURIpointingtothechosencontact).Forbroadcastreceivers,theintentsimplydefinestheannouncementbeingbroadcast(forexample,abroadcasttoindicatethedevicebatteryislowincludesonlyaknownactionstringthatindicatesbatteryislow).Theothercomponenttype,contentprovider,isnotactivatedbyintents.Rather,itisactivatedwhentargetedbyarequestfromaContentResolver.ThecontentresolverhandlesalldirecttransactionswiththecontentprovidersothatthecomponentthatsperformingtransactionswiththeproviderdoesntneedtoandinsteadcallsmethodsontheContentResolverobject.Thisleavesalayerofabstractionbetweenthecontentproviderandthecomponentrequestinginformation(forsecurity).Thereareseparatemethodsforactivatingeachtypeofcomponent:Youcanstartanactivity(orgiveitsomethingnewtodo)bypassinganIntenttostartActivity()orstartActivityForResult()(whenyouwanttheactivitytoreturnaresult).Youcanstartaservice(orgivenewinstructionstoanongoingservice)bypassinganIntenttostartService().OryoucanbindtotheservicebypassinganIntenttobindService().YoucaninitiateabroadcastbypassinganIntenttomethodslikesendBroadcast(),sendOrderedBroadcast(),orsendStickyBroadcast().Youcanperformaquerytoacontentproviderbycallingquery()onaContentResolver.Formoreinformationaboutusingintents,seetheIntentsandIntentFiltersdocument.Moreinformationaboutactivatingspecificcomponentsisalsoprovidedinthefollowingdocuments:Activities,Services,BroadcastReceiverandContentProviders.TheManifestFileBeforetheAndroidsystemcanstartanapplicationcomponent,thesystemmustknowthatthecomponentexistsbyreadingtheapplicationsAndroidManifest.xmlfile(themanifestfile).Yourapplicationmustdeclareallitscomponentsinthisfile,whichmustbeattherootoftheapplicationprojectdirectory.Themanifestdoesanumberofthingsinadditiontodeclaringtheapplicationscomponents,suchas:Identifyanyuserpermissionstheapplicationrequires,suchasInternetaccessorread-accesstotheuserscontacts.DeclaretheminimumAPILevelrequiredbytheapplication,basedonwhichAPIstheapplicationuses.Declarehardwareandsoftwarefeaturesusedorrequiredbytheapplication,suchasacamera,bluetoothservices,oramultitouchscreen.APIlibrariestheapplicationneedstobelinkedagainst(otherthantheAndroidframeworkAPIs),suchastheGoogleMapslibrary.AndmoreDeclaringcomponentsTheprimarytaskofthemanifestistoinformthesystemabouttheapplicationscomponents.Forexample,amanifestfilecandeclareanactivityasfollows:.Intheelement,theandroid:iconattributepointstoresourcesforaniconthatidentifiestheapplication.Intheelement,theandroid:nameattributespecifiesthefullyqualifiedclassnameoftheActivitysubclassandtheandroid:labelattributesspecifiesastringtouseastheuser-visiblelabelfortheactivity.Youmustdeclareallapplicationcomponentsthisway:elementsforactivitieselementsforserviceselementsforbroadcastreceiverselementsforcontentprovidersActivities,services,andcontentprovidersthatyouincludeinyoursourcebutdonotdeclareinthemanifestarenotvisibletothesystemand,consequently,canneverrun.However,broadcastreceiverscanbeeitherdeclaredinthemanifestorcreateddynamicallyincode(asBroadcastReceiverobjects)andregisteredwiththesystembycallingregisterReceiver().Formoreabouthowtostructurethemanifestfileforyourapplication,seeTheAndroidManifest.xmlFiledocumentation.DeclaringcomponentcapabilitiesAsdiscussedabove,inActivatingComponents,youcanuseanIntenttostartactivities,services,andbroadcastreceivers.Youcandosobyexplicitlynamingthetargetcomponent(usingthecomponentclassname)intheintent.However,therealpowerofintentsliesintheconceptofintentactions.Withintentactions,yousimplydescribethetypeofactionyouwanttoperform(andoptionally,thedatauponwhichyoudliketoperformtheaction)andallowthesystemtofindacomponentonthedevicethatcanperformtheactionandstartit.Iftherearemultiplecomponentsthatcanperformtheactiondescribedbytheintent,thentheuserselectswhichonetouse.Thewaythesystemidentifiesthecomponentsthatcanrespondtoanintentisbycomparingtheintentreceivedtotheintentfiltersprovidedinthemanifestfileofotherapplicationsonthedevice.Whenyoudeclareacomponentinyourapplicationsmanifest,youcanoptionallyincludeintentfiltersthatdeclarethecapabilitiesofthecomponentsoitcanrespondtointentsfromotherapplications.Youcandeclareanintentfilterforyourcomponentbyaddinganelementasachildofthecomponentsdeclarationelement.Forexample,anemailapplicationwithanactivityforcomposinganewemailmightdeclareanintentfilterinitsmanifestentrytorespondtosendintents(inordertosendemail).Anactivityinyourapplicationcanthencreateanintentwiththe“send”action(ACTION_SEND),whichthesystemmatchestotheemailapplications“send”activityandlaunchesitwhenyouinvoketheintentwithstartActivity().Formoreaboutcreatingintentfilters,seetheIntentsandIntentFiltersdocument.DeclaringapplicationrequirementsThereareavarietyofdevicespoweredbyAndroidandnotallofthemprovidethesamefeaturesandcapabilities.Inordertopreventyourapplicationfrombeinginstalledondevicesthatlackfeaturesneededbyyourapplication,itsimportantthatyouclearlydefineaprofileforthetypesofdevicesyourapplicationsupportsbydeclaringdeviceandsoftwarerequirementsinyourmanifestfile.Mostofthesedeclarationsareinformationalonlyandthesystemdoesnotreadthem,butexternalservicessuchasGooglePlaydoreadtheminordertoprovidefilteringforuserswhentheysearchforapplicationsfromtheirdevice.Forexample,ifyourapplicationrequiresacameraandusesAPIsintroducedinAndroid2.1(APILevel7),youshoulddeclaretheseasrequirementsinyourmanifestfile.Thatway,devicesthatdonothaveacameraandhaveanAndroidversionlowerthan2.1cannotinstallyourapplicationfromGooglePlay.However,youcanalsodeclarethatyourapplicationusesthecamera,butdoesnotrequireit.Inthatcase,yourapplicationmustperformacheckatruntimetodetermineifthedevicehasacameraanddisableanyfeaturesthatusethecameraifoneisnotavailable.Herearesomeoftheimportantdevicecharacteristicsthatyoushouldconsiderasyoudesignanddevelopyourapplication:ScreensizeanddensityInordertocategorizedevicesbytheirscreentype,Androiddefinestwocharacteristicsforeachdevice:screensize(thephysicaldimensionsofthescreen)andscreendensity(thephysicaldensityofthepixelsonthescreen,ordpidotsperinch).Tosimplifyallthedifferenttypesofscreenconfigurations,theAndroidsystemgeneralizesthemintoselectgroupsthatmakethemeasiertotarget.Thescreensizesare:small,normal,large,andextralarge.Thescreendensitiesare:lowdensity,mediumdensity,highdensity,andextrahighdensity.Bydefault,yourapplicationiscompatiblewithallscreensizesanddensities,becausetheAndroidsystemmakestheappropriateadjustmentstoyourUIlayoutandimageresources.However,youshouldcreatespecializedlayoutsforcertainscreensizesandprovidespecializedimagesforcertaindensities,usingalternativelayoutresources,andbydeclaringinyourmanifestexactlywhichscreensizesyourapplicationsupportswiththeelement.Formoreinformation,seetheSupportingMultipleScreensdocument.InputconfigurationsManydevicesprovideadifferenttypeofuserinputmechanism,suchasahardwarekeyboard,atrackball,orafive-waynavigationpad.Ifyourapplicationrequiresaparticularkindofinputhardware,thenyoushoulddeclareitinyourmanifestwiththeelement.However,itisrarethatanapplicationshouldrequireacertaininputconfiguration.DevicefeaturesTherearemanyhardwareandsoftwarefeaturesthatmayormaynotexistonagivenAndroid-powereddevice,suchasacamera,alightsensor,bluetooth,acertainversionofOpenGL,orthefidelityofthetouchscreen.YoushouldneverassumethatacertainfeatureisavailableonallAndroid-powereddevices(otherthantheavailabilityofthestandardAndroidlibrary),soyoushoulddeclareanyfeaturesusedbyyourapplicationwiththeelement.PlatformVersionDifferentAndroid-powereddevicesoftenrundifferentversionsoftheAndroidplatform,suchasAndroid1.6orAndroid2.3.EachsuccessiveversionoftenincludesadditionalAPIsnotavailableinthepreviousversion.InordertoindicatewhichsetofAPIsareavailable,eachplatformversionspecifiesanAPILevel(forexample,Android1.0isAPILevel1andAndroid2.3isAPILevel9).IfyouuseanyAPIsthatwereaddedtotheplatformafterversion1.0,youshoulddeclaretheminimumAPILevelinwhichthoseAPIswereintroducedusingtheelement.Itsimportantthatyoudeclareallsuchrequirementsforyourapplication,because,whenyoudistributeyourapplicationonGooglePlay,thestoreusesthesedeclarationstofilterwhichapplicationsareavailableoneachdevice.Assuch,yourapplicationshouldbeavailableonlytodevicesthatmeetallyourapplicationrequirements.FormoreinformationabouthowGooglePlayfiltersapplicationsbasedonthese(andother)requirements,seetheFiltersonGooglePlaydocument.ApplicationResourcesAnAndroidapplicationiscomposedofmorethanjustcodeitrequiresresourcesthatareseparatefromthesourcecode,suchasimages,audiofiles,andanythingrelatingtothevisualpresentationoftheapplication.Forexample,youshoulddefineanimations,menus,styles,colors,andthelayoutofactivityuserinterfaceswithXMLfiles.Usingapplicationresourcesmakesiteasytoupdatevariouscharacteristicsofyourapplicationwithoutmodifyingcodeandbyprovidingsetsofalternativeresourcesenablesyoutooptimizeyourapplicationforavarietyofdeviceconfigurations(suchasdifferentlanguagesandscreensizes).ForeveryresourcethatyouincludeinyourAndroidproject,theSDKbuildtoolsdefineauniqueintegerID,whichyoucanusetoreferencetheresourcefromyourapplicationcodeorfromotherresourcesdefinedinXML.Forexample,ifyourapplicationcontainsanimagefilenamedlogo.png(savedintheres/drawable/directory),theSDKtoolsgeneratearesourceIDnamedR.drawable.logo,whichyoucanusetoreferencetheimageandinsertitinyouruserinterface.Oneofthemostimportantaspectsofprovidingresourcesseparatefromyoursourcecodeistheabilityforyoutoprovidealternativeresourcesfordifferentdeviceconfigurations.Forexample,bydefiningUIstringsinXML,youcantranslatethestringsintootherlanguagesandsavethosestringsinseparatefiles.Then,basedonalanguagequalifierthatyouappendtotheresourcedirectorysname(suchasres/values-fr/forFrenchstringvalues)andtheuserslanguagesetting,theAndroidsystemappliestheappropriatelanguagestringstoyourUI.Androidsupportsmanydifferentqualifiersforyouralternativeresources.Thequalifierisashortstringthatyouincludeinthenameofyourresourcedirectoriesinordertodefinethedeviceconfigurationforwhichthosereso
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB52-T 1685-2022 电动汽车充电站(桩)防雷技术规范
- 基层采油安全
- 初三化学化学用语综合测试试卷及答案
- 中国农业巨灾保险模式的探索与创新:基于典型案例的深度剖析
- PARP抑制剂对大鼠脑出血后血肿周围区神经元死亡影响的实验探究
- 八年级数学轴对称变换单元试卷及答案
- 导航原理(第3版)课件 第七章2-测距定位-测距差定位-
- 基地安全知识培训内容课件记录
- 新解读《GB-T 33588.3-2020雷电防护系统部件(LPSC)第3部分:隔离放电间隙(ISG)的要求》
- 浙商控股面试题及答案
- 2025年科技咨询师考试题库
- 四川省凉山州2024-2025学年高一下册期末统一检测数学检测试卷
- 2025年道路运输两类人员安全员考试考核试题库答案
- 2025年历年医疗卫生卫健委面试真题及答案解析
- 心衰病人的观察与护理
- 食品安全卫生试题及答案
- GB/T 30807-2025建筑用绝热制品浸泡法测定长期吸水性
- 矿业公司环保培训课件
- 驾校项目施工方案
- 李咏梅元音教学课件
- 2024-2025学年人教版七年级数学(下)期中试卷(考试范围:第7-9章)(含解析)
评论
0/150
提交评论