![Android應(yīng)用開發(fā)快速入門_第1頁](http://file4.renrendoc.com/view/64f85122eb378a5cfa25be850c0e8d8b/64f85122eb378a5cfa25be850c0e8d8b1.gif)
![Android應(yīng)用開發(fā)快速入門_第2頁](http://file4.renrendoc.com/view/64f85122eb378a5cfa25be850c0e8d8b/64f85122eb378a5cfa25be850c0e8d8b2.gif)
![Android應(yīng)用開發(fā)快速入門_第3頁](http://file4.renrendoc.com/view/64f85122eb378a5cfa25be850c0e8d8b/64f85122eb378a5cfa25be850c0e8d8b3.gif)
![Android應(yīng)用開發(fā)快速入門_第4頁](http://file4.renrendoc.com/view/64f85122eb378a5cfa25be850c0e8d8b/64f85122eb378a5cfa25be850c0e8d8b4.gif)
![Android應(yīng)用開發(fā)快速入門_第5頁](http://file4.renrendoc.com/view/64f85122eb378a5cfa25be850c0e8d8b/64f85122eb378a5cfa25be850c0e8d8b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Android應(yīng)用開發(fā)快速入門Android是什么?Android是Google開發(fā)的基于Linux平臺的開源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序——移動電話工作所需的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。谷歌與開放手機(jī)聯(lián)盟合作開發(fā)了Android,這個聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達(dá)和T-Mobile在內(nèi)的30多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。Android作為谷歌企業(yè)戰(zhàn)略的重要組成部分,將進(jìn)一步推進(jìn)"隨時隨地為每個人提供信息"這一企業(yè)目標(biāo)的實現(xiàn)。Android用什么語言開發(fā)的?Android的SDK(softwaredevelopmentkit)是Java的,將來可能有其他語言版本。SDK下載地址:/android/download.htmlAndroid模擬器是用什么開發(fā)的?Android的核心是Java虛擬機(jī),為了高效,目前來看,google是不會支持其它語言的開發(fā)的。不過,android的模擬器是用qeum開發(fā)的,它的鏡像文件分成4部分放在tools目錄下,如果我們將qeum修改一下,說不定能玩一下它的linux系統(tǒng)。怎么進(jìn)行Android開發(fā)?Android支持在模擬器上運(yùn)行和調(diào)試應(yīng)用軟件,有興趣的朋友可以下載他的SDK(softwaredevelopmentkit)來了解android的界面;然后應(yīng)該學(xué)習(xí)android的基本框架和應(yīng)用程序的構(gòu)成;最后就可以試著在sdk的APIDemo的基礎(chǔ)上開發(fā)自己的application了。希望剛剛了解軟件開發(fā)的朋友不要著急,一步一個腳印,一定會茁壯成長,開發(fā)優(yōu)秀的application的。有哪些好的網(wǎng)絡(luò)資源可供Android學(xué)習(xí)者用的呢?首先,最好的最基本的學(xué)習(xí)資料無疑是SDK的文檔了,也就是這個地方(http:///intl/zh-CN/android/documentation.html)的介紹,它循序漸進(jìn)的介紹了Android的各個方面。其次,大家可能有對android文檔不太理解的地方,或者自己的想法等等,完全可以通過下面的groups進(jìn)行咨詢和交流:
?AndroidBeginner?DevelopperGroups?AndroidInternals?AndroidBeginner?DevelopperGroups?AndroidInternals?AndroidPorting/group/android—developers/group/android—internals?lnk二http:///group/android—porting?lnk二Android開發(fā)環(huán)境配置簡介寫這個系列的原因也是因為自己對android比較感興趣,而網(wǎng)上多數(shù)教程都是直接參照官方翻譯,并且翻譯質(zhì)量也不是很好,因為有些東西看去還真是英文能理解,中文翻譯的反而不倫不類。我不是說我英文水平有多好,所以我也不會去做翻譯,我只會把我學(xué)習(xí)進(jìn)度過程做記錄,和大家一起分享。那我就從最基本的說起,環(huán)境配置。一、Android開發(fā)環(huán)境配置1.1Android開發(fā)環(huán)境需求1.1.1操作系統(tǒng)目前只支持XP(32-bit)、Vista(32/64-bit)、MacOSX10.4.8或更新版本(x86)、Linux(只在LinuxUbuntuDapperDrake上面做過測試)。我的筆記也只是按照本人的系統(tǒng)XPsp2/sp332bit來做講解,其他系統(tǒng)的朋友可以google一下差異,反正都大同小異的。Android開發(fā)環(huán)境無論是官方還是我本人,都建議使用eclipse進(jìn)行開發(fā),當(dāng)然,eclipse版本要在3.3以上,這是官方說法,3.3以下我也沒測過,3.3(Europa)、3.4(Ganymede)都可以,java版本或者EE版本也都沒問題的,可以到eclipse官方下載最新版本。因為開發(fā)是基于java的,所以jdk是少不了的,jdk要求是5.0或者6.0,我還是用5.0比較多,可以到sun官方下載。如果不用eclipse,也可以直接使用ant來構(gòu)建,那當(dāng)然就需要ant了,ant的配置我順帶一提,一般用ant的人都已懂得,而新手都不會用它,肯定用eclipse了,呵呵。Android開發(fā)環(huán)境變量配置1.2.1jdk的配置已經(jīng)配置好的請飄過??高手飄過??新手請跟進(jìn)。首先到sun官方下載jdk,注意是jdk而不是jre,因為jre是提供java運(yùn)行環(huán)境而不是開發(fā)環(huán)境喲。sun官方下載后安裝或者有些朋友是下的解壓包那就解壓到某目錄,例如我是C:\ProgramFiles\Java\jdk1.5.0_14右擊我的電腦->屬性->高級,點擊下面的環(huán)境變量,在下面的“系統(tǒng)變量”處選擇新建在變量名處輸入JAVA_HOME,變量值中輸入剛才的目錄,比如我的就是C:\ProgramFiles\Java\jdkl.5.0_14,確定后再新建一個變量名為classpath,變量值為.;%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar,確定后找到PATH的變量,雙擊或點擊編輯,在變量值最前面加上JAVA_HOME%/bin;注意里面的;哦。確定、確定、確定后即可然后開始-運(yùn)行cmd,輸入java或者javac看看有沒有效果,如果出來一大堆東東,那就ok了,如果出現(xiàn)類似xxx不是內(nèi)部或外部命令之類的那就說明設(shè)置有問題,看看那里出問題啦。eclipse下載安裝至0eclipse官方下載最新版本,/downloads/我剛才下了最新的189M的那個eclipse-jee-galileo-win32.zip大家可以自己選擇下載,下載后解壓即可運(yùn)行。不用其他特殊配置“暫時”。sdk的配置因為我們要開發(fā)的android應(yīng)用程序,所以下的sdk是Google那里下載,地址在http:///sdk/1.5r3/index.html以后更新后估計地址會變,所以大家可以從/index.html進(jìn)入android主頁,然后點擊sdk就到了這個下載頁面,我是XP,當(dāng)然下載了第一個Windows的版本。下載后解壓到一個目錄,如我的是D:\SDK\android-sdk-windows-1.5_r3\android-sdk-windows-1.5_r3然后同樣要設(shè)置環(huán)境變量,同jdk設(shè)置,新建一個SDK_H0ME,值為D:\SDK\android-sdk-windows-1.5_r3\android-sdk-windows-1.5_r3,然后找到path,在前面加上%SDK_HOME%\tools;就OK了。和jdk一樣,我們也可以測試一下環(huán)境變量是否設(shè)置成功,cmd窗口中輸入android,出現(xiàn)一堆東西,OK完成。ant的配置用eclipse開發(fā)基本就用不到了。但是有些“高手”就是喜歡,呵呵,ant是apache的東西,所以去下載吧,down回來后解壓,配置環(huán)境變量ANT_H0ME二解壓路徑path中添加%ANT_HOME%/bin;同樣,測試一下,cmd中輸入ant,出現(xiàn)build.xml不存在類似的提示就OK了。eclipse設(shè)置當(dāng)然,以上都搞定后,還不能馬上用eclipse開發(fā)android應(yīng)用程序,還必須添加eclipse插件才行,幸好這步驟非常輕松,打開eclipse后,點擊菜單欄的help->installnewsoftware...然后點擊Add會出來一個AddSite的窗口,這里Name輸入android(自己取個就是了),location中輸入插件的網(wǎng)絡(luò)地址:/android/eclipse/然后就等待連接了,然后install,把"AndroidDDMS"和"AndroidDevelopmentTools"都選中‘finish就可以了,可能有段時間會去計算插件占用資源情況,慢慢等會。完成后會提示重啟eclipse來加載插件,ok重啟,就可以用了。Android開發(fā)環(huán)境配置最終步驟 為什么要有這個步驟,是因為我跑example的時候總出現(xiàn)“FailedtofindanAVDcompatiblewithtarget”,所以這里寫一下該步驟以提醒大家。avd必須在運(yùn)行實例前創(chuàng)建好,可以直接在cmd中輸入androidlist,會列出可以創(chuàng)建avd的幾個api,我這里有id1id2id3分別對應(yīng)sdk1.1sdk1.5GoogleAPIs。然后大家運(yùn)行androidcreate—namemyname(自己取個,英文的呃)一target3(如果要用sdk1.5就輸入2,1.1就用1)創(chuàng)建好后就完成了終極步驟??到此,大家可以去eclipse里面new一個android工程,然后直接在工程上點右鍵run--runandroid了,只不過模擬器開機(jī)時間有點長,害我一開始以為失敗了,一直停留在android字樣上,其實那是在開機(jī) 然后大家自己先玩玩,過把癮,買不起手機(jī),過模擬器的癮??補(bǔ)充一下,在eclipse建立android項目前,需要在eclipse中配置sdk目錄,注意不是tools目錄哦。方法:window—preferences—android然后在SDKlocation中輸入sdk目錄地址或者點擊browse定位到sdk目錄即可,然后apply,ok就完成了
詳解Android源碼的編譯本文將為大家介紹的是如何設(shè)置Android源碼的編譯環(huán)境,包括Linux下的配置。主要基于Android1.0環(huán)境,希望對大家了解Android開發(fā)有所幫助。本次編譯過程主要參考官方文檔(http://source.A/download)和網(wǎng)上相關(guān)資料(如/liaoshengjiong/archive/2009/03/04/3957749.aspx)編譯環(huán)境:Ubuntu8.101、安裝一些環(huán)境1.sudoapt-getinstallbuild-essential2.sudoapt-getinstallmake3.sudoapt-getinstallgcc4.sudoapt-getinstallg++5.6sudoapt-getinstalllibc6-dev6.7.sudoapt-getinstallpatch8.sudoapt-getinstalltexinfo9.sudoapt-getinstalllibncurses-dev10.11.sudoapt-getinstallgit-coregnupg12.sudoapt-getinstallflexbisongperflibsdl-devlibesdO-devlibwxgtk2.6-devbuild-essentialzipcurl13.sudoapt-getinstallncurses-dev14.sudoapt-getinstallzlib1g-dev15.sudoapt-getinstallvalgrind16.sudoapt-getinstallpython2.5安裝java環(huán)境sudoapt-getinstallsun-java6-jresun-java6-pluginsun-java6-fontssun-java6-jdk注:官方文檔說如果用sun-java6-jdk可出問題,得要用sun-java5-jdk。經(jīng)測試發(fā)現(xiàn),如果僅僅make(make不包括makesdk),用sun-java6-jdk是沒有問題的。而makesdk,就會有問題,嚴(yán)格來說是在makedoc出問題,它需要的javadoc版本為1.5。因此,我們安裝完sun-java6-jdk后最好再安裝sun-java5-jdk,或者只安裝sun-java5-jdk。這里sun-java6-jdk和sun-java5-jdk都安裝,并只修改javadoc.1.gz
和javadoc。因為只有這兩個是makesdk用到的。這樣的話,除了javadoc工具是用1.5版本,其它均用1.6版本:sudoapt-getinstallsun-java5-jdk修改javadoc的linkcd/etc/alternativessudo rm javadoc?1.gzsudo ln -s/usr/lib/jvm/java-1.5?0-sun/man/man1/javadoc?1.gzjavadoc?1.gzsudo rm javadocsudo ln -s/usr/lib/jvm/java-1.5.0—sun/bin/javadoc javadoc2、設(shè)置環(huán)境變量vim?/.bashrc在.bashrc中新增或整合PATH變量,如下#java程序開發(fā)/運(yùn)行的一些環(huán)境變量JAVA_HOME=/usr/lib/jvm/java-6-sunJRE_HOME=${JAVA_HOME}/jreexportAndroid_JAVA_HOME=$JAVA_HOMEexportCLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATHexportJAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binexportJAVA_HOME;exportJRE_HOME;exportCLASSPATH;HOME_BIN=~/bin/exportPATH=${PATH}:${JAVA_PATH}:${JRE_PATH}:${HOME_BIN};#echo$PATH;最后,同步這些變化:source~/.bashrc3、安裝repo(用來更新Android源碼)創(chuàng)建~/bin目錄,用來存放repo程序,如下:$cd~$mkdirbin并加到環(huán)境變量PATH中,在第2步中已經(jīng)加入
下載repo腳本并使其可執(zhí)行:40. $curlhttp://A/repo>?/bin/repo$chmoda+x?/bin/repo4、下載Android源碼并更新之建議不要用repo來下載(Android源碼超過1G,非常慢),直接在網(wǎng)上下載http://www.A/bbs/pub/cupcake.tar.gz。而且解壓出來的cupcake下也有.repo文件夾,可以通過reposync來更新cupcake代碼:tar-xvfcupcake.tar.gzreposync(更新很慢,用了3個小時)5、 編譯Android源碼,并得到~/project/Android/cupcake/out目錄進(jìn)入Android源碼目錄:make這一過程很久(2個多小時)6、 在模擬器上運(yùn)行編譯好AndroidAndroidSDK的emulator程序在Android-sdk-linux_x86T.0_r2/tools/下,emulator是需要加載一些image的,默認(rèn)加載Android-sdk-linux_x86T.0_r2/tools/lib/images下的kernel-qemu(內(nèi)核)ramdisk.imgsystem.imguserdata.img編譯好Android之后,emulator在~/project/Android/cupcake/out/host/linux-x86/bin下,ramdisk.imgsystem.imguserdata.img貝I」在~/project/Android/cupcake/out/target/product/generic下cd~/project/Android/cupcake/out/host/linux-x86/bin增加環(huán)境變量vim?/.bashrc在.bashrc中新增環(huán)境變量,如下44.#java程序開發(fā)/運(yùn)行的一些環(huán)境變量exportAndroid_PR0DUCT_0UT=~/project/Android/cupcake2/out/target/product/genericAndroid_PRODUCT_OUT_BIN=~/project/Android/cupcake2/out/host/linux-x86/binexportPATH=${PATH}:${Android_PRODUCT_OUT_BIN};最后,同步這些變化:source~/.bashrcemulator-imagesystem.img-datauserdata.img-ramdiskramdisk.img最后進(jìn)入Android桌面,就說明成功了。out/host/linux-x86/bin下生成許多有用工具(包括AndroidSDK/tools的所有工具)因此,可以把eclipse中AndroidSDK的路徑指定到out/host/linux-x86/bin進(jìn)行開發(fā)7、編譯linuxkernel直接makeAndroid源碼時,并沒有makelinuxkernel。因此是在運(yùn)行模擬器,所以不用編譯linuxkernelo如果要移值A(chǔ)ndroid,或增刪驅(qū)動,則需要編譯linuxkernellinuxkernel的編譯將在以后的文章中介紹。8、編譯模塊Android中的一個應(yīng)用程序可以單獨(dú)編譯,編譯后要重新生成system.img在源碼目錄下執(zhí)行.build/envsetup.sh(.后面有空格)就多出一些命令:51.一croot:Changesdirectorytothetopofthetree.52.一m:Makesfromthetopofthetree.53.-mm:Buildsallofthemodulesinthecurrentdirectory.54.-mmm:Buildsallofthemodulesinthesupplieddirectories.55.一cgrep:GrepsonalllocalC/C++files.56.-jgrep:GrepsonalllocalJavafiles.57.一resgrep:Grepsonalllocalres/*.xmlfiles.58.一godir:Gotothedirectorycontainingafile.可以加一help查看用法我們可以使用mmm來編譯指定目錄的模塊,如編譯聯(lián)系人:59.mmmpackages/apps/Contacts/編完之后生成兩個文件:61.out/target/product/generic/system/app/Contacts.apk61.GoogleCEO談Android和ChromeOS操作系統(tǒng)開發(fā)商擔(dān)心Android發(fā)展速度過快谷歌創(chuàng)始人布林:ChromeOS與Android將..Android占領(lǐng)2010的六大理由開發(fā)人員的怨念:Android開發(fā)應(yīng)用像噩夢可以使用makesnod重新生成system.img再運(yùn)行模擬器9、編譯SDK直接執(zhí)行make是不包括makesdk的。makesdk用來生成SDK,這樣,我們就可以用與源碼同步的SDK來開發(fā)Android了。1) 修改/frameworks/base/include/utils/Asset.h'UNCOMPRESS_DATA_MAX=1*1024*1024'改為'UNCOMPRESS_DATA_MAX=2*1024*1024'原因是Eclipse編譯工程需要大于1.3M的buffer2) 編譯ADT。注意,我們是先執(zhí)行2),再執(zhí)行3)。因為在執(zhí)行./build_server.sh時,會把生成的SDK清除了。用上了新的源碼,adt這個調(diào)試工具也得自己來生成,步驟如下:進(jìn)入cupcake源碼的development/tools/eclipse/scripts目錄,執(zhí)行:exportECLIPSE_H0ME二你的eclipse路徑./build_server.sh你想放ADT的路徑3) 執(zhí)行makesdk。注意,這里需要的javadoc版本為1.5,所以你需要在步驟1中同時安裝sun-java5-jdkmakesdk編譯很慢。編譯后生成的SDK存放在out/host/linux-x86/sdk/,此目錄下有Android-sdk_eng.xxx_linux-x86.zip和Android-sdk_eng.xxx_linux-x86目錄。Android-sdk_eng.xxx_linux-x86就是SDK目錄實際上,當(dāng)用mmm命令編譯模塊時,一樣會把SDK的輸出文件清除,因此,最好把Android-sdk_eng.xxx_linux-x86移出來4) 關(guān)于環(huán)境變量、Android工具的選擇目前的Android工具有:A、 我們從網(wǎng)上下載的SDK(tools下有許多Android工具,lib/images下有img映像)B、 我們用makesdk編譯出來的SDK(tools下也有許多Android工具,lib/images下有img映像)C、 我們用make編譯出來的out目錄(tools下也有許多Android工具,lib/images下有img映像)那么我們應(yīng)該用那些工具和img呢?首先,我們不會用A選項的工具和img,因為一般來說它比較舊,也源碼不同步。測試發(fā)現(xiàn),如果使用B選項的工具和img,Android模擬器窗口變?。赡苁莝kin加載不了),而用C選項的工具和img則不會有此問題。有些Android工具依賴Android.jar(比如Android),因此,我們在eclipse中使用B選項的工具(SDK),使用C選項的img。其實,從emulator-help-build-images也可以看出,Android_PRODUCT_OUT是指向C選項的img目錄的不過,除了用A選項的工具和img,用B或C的模擬器都不能加載sdcard,原因還不清楚。5) 安裝、配置ADT安裝、配置ADT請參考官方文檔6) 創(chuàng)建AndroidVirtualDevice編譯出來的SDK是沒有AVD(AndroidVirtualDevice)的,我們可以通過Android工具查看:Androidlist輸出為:AvailableAndroidtargets:[1]Android1.5APIlevel:3Skins:HVGA—P,QVGA—L,HVGA—L,HVGA(default),QVGA—PAvailableAndroidVirtualDevices:表明沒有AVD。如果沒有AVD,eclipse編譯工程時會出錯(FailedtofindaAVDcompatiblewithtarget'Android1.5'.Launchaborted.)創(chuàng)建AVD:Androidcreateavd-t1-c~/sdcard.img-nmyavd可以Android-help來查看上面命令選項的用法。創(chuàng)建中有一些選項,默認(rèn)就行了再執(zhí)行Androidlist,可以看到AVD存放的位置以后每次運(yùn)行emulator都要加-avdmyavd或@myavd選項,這里eclipse才會在你打開的emulator中調(diào)試程序注意:這樣,SDK和ADT就生成了,就按照官方文檔把他們整合到Eclipse,這里不再細(xì)說了。建個Android的新工程,試試你自己編譯的sdk。Android應(yīng)用程序模塊詳解在大多數(shù)操作系統(tǒng)里,存在獨(dú)立的一個1對1的可執(zhí)行文件(如Windows里的exe文件),它可以產(chǎn)生進(jìn)程,并能和界面圖標(biāo)、應(yīng)用進(jìn)行用戶交互。但在Android里,這是不固定的,理解將這些分散的部分如何進(jìn)行組合是非常重要的。由于Android這種可靈活變通的,在實現(xiàn)一個應(yīng)用不同部分時你需要理解一些基礎(chǔ)技術(shù):一個android包(簡稱.apk),里面包含應(yīng)用程序的代碼以及資源。這是一個應(yīng)用發(fā)布,用戶能下載并安裝他們設(shè)備上的文件。一個任務(wù),通常用戶能當(dāng)它為一個“應(yīng)用程序”來啟動:通常在桌面上會有一個圖標(biāo)可以來啟動任務(wù),這是一個上層的應(yīng)用,可以將你的任務(wù)切換到前臺來。一個進(jìn)程是一個底層的代碼運(yùn)行級別的核心進(jìn)程。通常.apk包里所有代碼運(yùn)行在一個進(jìn)程里,一個進(jìn)程對于一個apk包;然而,進(jìn)程標(biāo)簽常用來改變代碼運(yùn)行的位置,可以是全部的.apk包或者是獨(dú)立的活動,接收器,服務(wù),或者提供器組件。任務(wù)記住關(guān)鍵的一點:當(dāng)用戶看到的“應(yīng)用”,無論實際是如何處理的,它都是一個任務(wù)。如果你僅僅通過一些活動來創(chuàng)建一個.apk包,其中有一個肯定是上層入口(通過動作的intent-filter以及分類ent.category.LAUNCHER),然后你的.apk包就創(chuàng)建了一個單獨(dú)任務(wù),無論你啟動哪個活動都會是這個任務(wù)的一部分。一個任務(wù),從使用者的觀點,他是一個應(yīng)用程序;對開發(fā)者來講,它是貫穿活動著任務(wù)的一個或者多個視圖,或者一個活動棧。當(dāng)設(shè)置Intent.FLAG_ACTIVITY_NEW_TASK標(biāo)志啟動一個活動意圖時,任務(wù)就被創(chuàng)建了;這個意圖被用作任務(wù)的根用途,定義區(qū)分哪個任務(wù)。如果活動啟動時沒有這個標(biāo)記將被運(yùn)行在同一個任務(wù)里(除非你的活動以特殊模式被啟動,這個后面會討論)。如果你使用FLAG_ACTIVITY_NEW_TASK標(biāo)記并且這個意圖的任務(wù)已經(jīng)啟動,任務(wù)將被切換到前臺而不是重新加載。FLAG_ACTIVITY_NEW_TASK必須小心使用:在用戶看來,一個新的應(yīng)用程序由此啟動。如果這不是你期望的,你想要創(chuàng)建一個新的任務(wù)。另外,如果用戶需要從桌面退出到他原來的地方然后使用同樣的意圖打開一個新的任務(wù),你需要使用新的任務(wù)標(biāo)記。否則,如果用戶在你剛啟動的任務(wù)里按桌面(HOME)鍵,而不是退出(BACK)鍵,你的任務(wù)以及任務(wù)的活動將被放在桌面程序的后面,沒有辦法再切換過去。任務(wù)親和力(Affinities)一些情況下Android需要知道哪個任務(wù)的活動附屬于一個特殊的任務(wù),即使該任務(wù)還沒有被啟動。這通過任務(wù)親和力來完成,它為任務(wù)中一個或多個可能要運(yùn)行的活動提供一個獨(dú)一無二的靜態(tài)名字。默認(rèn)為活動命名的任務(wù)親和力的名字,就是實現(xiàn)該活動apk包的名字。這提供一種通用的特性,對用戶來說,所有在.apk包里的活動都是單一應(yīng)用的一部分。當(dāng)不帶Intent.FLAG_ACTIVITY_NEW_TASK標(biāo)記啟動一個新的活動,任務(wù)親和力對新啟動的活動將沒有影響作用:它將一直運(yùn)行在它啟動的那個任務(wù)里。然而,如果使用NEW_TASK標(biāo)記,親和力會檢測已經(jīng)存在的任務(wù)是否具有相同的親和力。如果是,該任務(wù)會被切換到前臺,新的活動會在任務(wù)的最上面被啟動。你可以在你的表現(xiàn)文件里的應(yīng)用程序標(biāo)簽里為.apk包里所有的活動設(shè)置你自己的任務(wù)親和力,當(dāng)然也可以為單獨(dú)的活動設(shè)置標(biāo)簽。這里有些例子演示如何使用:如果你的.apk包里包含多個用戶可啟動的上層應(yīng)用程序,那么你可能想要為每個活動分配不同的親和力。這里有一個不錯的協(xié)定,你可以將不同的名字字串加上冒號附加在.apk包名字的后面。例如,"com.android.contacts"的親和力命名可以是"com.android.contacts:Dialer"and"com.android.contacts:ContactsList"。如果你想替換一個通知,快捷鍵,或者其它能從外部啟動的應(yīng)用程序的內(nèi)部活動,你需要在你想替換的活動里明確的設(shè)置任務(wù)親和力(taskAffinity)。例如,如果你想替換聯(lián)系人詳細(xì)信息瀏覽界面(用戶可以直接操作或者通過快捷方式調(diào)用),你需要設(shè)置任務(wù)親和力(taskAffinity)為“com.android.contacts”。啟動模式以及啟動標(biāo)記你控制活動和任務(wù)通信的最主要的方法是通過設(shè)置啟動模式的屬性以及意圖相應(yīng)的標(biāo)記。這兩個參數(shù)能以不同的組合來共同控制活動的啟動結(jié)果,這在相應(yīng)的文檔里有描述。這里我們只描述一些通用的用法以及幾種不同的組合方式。你最通常使用的模式是singleTop(除了默認(rèn)為standard模式)。這不會對任務(wù)產(chǎn)生什么影響;僅僅是防止在棧頂多次啟動同一個活動。singleTask模式對任務(wù)有一些影響:它能使得活動總是在新的任務(wù)里被打開(或者將已經(jīng)打開的任務(wù)切換到前臺來)。使用這個模式需要加倍小心該進(jìn)程是如何和系統(tǒng)其他部分交互的,它可能影響所有的活動。這個模式最好被用于應(yīng)用程序入口活動的標(biāo)記中。(支持MAIN活動和LAUNCHER分類)。singleInstance啟動模式更加特殊,該模式只能當(dāng)整個應(yīng)用只有一個活動時使用。有一種情況你會經(jīng)常遇到,其它實體(如搜索管理器SearchManager或者通知管理器NotificationManager)會啟動你的活動。這種情況下,你需要使用Intent.FLAG_ACTIVITY_NEW_TASK標(biāo)記,因為活動在任務(wù)(這個應(yīng)用/任務(wù)還沒有被啟動)之外被啟動。就像之前描述的一樣,這種情況下標(biāo)準(zhǔn)特性就是當(dāng)前和任務(wù)和新的活動的親和性匹配的任務(wù)將會切換到前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五一座談會方案
- 基于流形擬合的對抗性防御算法研究
- 2025年六安b2貨運(yùn)資格證考試題庫
- 大氣湍流與水下環(huán)境下單像素成像研究
- 影視導(dǎo)演藝術(shù)與音像制品制作考核試卷
- 2025年外研版三年級起點九年級生物上冊月考試卷含答案
- 2025年人教版八年級地理上冊階段測試試卷
- 智能交通資源共享合同(2篇)
- 智慧城市平臺合作開發(fā)合同(2篇)
- 服務(wù)申請高新企業(yè)保密協(xié)議書(2篇)
- 淋巴瘤的治療及護(hù)理
- 骨科抗菌藥物應(yīng)用分析報告
- 中職安全管理方案
- 百詞斬托福詞匯excel版本
- 高考寫作指導(dǎo)常見議論文論證方法知識梳理與舉例解析課件27張
- (完整word版)高中英語3500詞匯表
- 玻璃反應(yīng)釜安全操作及保養(yǎng)規(guī)程
- 高中英語新課標(biāo)詞匯表(附詞組)
- 證券公司信用風(fēng)險和操作風(fēng)險管理理論和實踐中金公司
- 一級建造師繼續(xù)教育最全題庫及答案(新)
- 2022年高考湖南卷生物試題(含答案解析)
評論
0/150
提交評論