安卓手機(jī)軟件制作.doc_第1頁(yè)
安卓手機(jī)軟件制作.doc_第2頁(yè)
安卓手機(jī)軟件制作.doc_第3頁(yè)
安卓手機(jī)軟件制作.doc_第4頁(yè)
安卓手機(jī)軟件制作.doc_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

安卓手機(jī)軟件制作(興移工作室) (鄭重說(shuō)明:以下資料切勿用于商業(yè)用途)一,java編程MyEclipse介紹應(yīng)用1.1.1菜單 界面最上面的是菜單條,菜單條中包含菜單(如File)和菜單項(xiàng)(如File New),菜單項(xiàng)下面則可能顯示子菜單(如Window Show View Console)。如下圖所示: 圖3.1菜單條 菜單條包含了大部分的功能,然而和常見(jiàn)的Windows軟件不同,MyEclipse的命令不能全部都通過(guò)菜單來(lái)完成。 1.1.2 工具欄 位于菜單條下面的是工具欄。如下圖所示: 圖3.2 工具欄 工具欄包含了最常用的功能。拖動(dòng)工具欄上的虛線(xiàn)可以更改按鈕顯示的位置。下表列出了常見(jiàn)的MyEclipse工具欄按鈕及其對(duì)應(yīng)的功能: 新建文件或項(xiàng)目 保存 打印 新建UML模型文件 啟動(dòng)AJAX網(wǎng)絡(luò)瀏覽器 新建Web Service 啟動(dòng)Web Service瀏覽器 發(fā)布Java EE項(xiàng)目到服務(wù)器 啟動(dòng)/停止/重啟服務(wù)器 啟動(dòng)MyEclipse網(wǎng)絡(luò)瀏覽器 打開(kāi)項(xiàng)目或者文件所在目錄 啟動(dòng)電子郵件軟件發(fā)送文件 截屏 新建EJB 3 Bean 調(diào)試程序 運(yùn)行程序 運(yùn)行外部工具 新建Java項(xiàng)目 新建包 新建類(lèi) 打開(kāi)類(lèi)型 搜索 打開(kāi)Spring bean定義 切換單詞匹配 下一標(biāo)注 前一標(biāo)注 最后一次修改的位置 文件的后一位置 文件的前一位置 1.1.3 透視圖(Perspective)切換器 位于工具欄最右側(cè)的是Eclipse特有的工具欄:透視圖切換器。如下圖所示: 圖3.3透視圖切換器 點(diǎn)擊按鈕可以顯示多個(gè)透視圖供切換。什么是透視圖?當(dāng)前的界面布局就是一個(gè)透視圖,通過(guò)給不同的布局起名字,便于用戶(hù)在多種常用的功能模塊下工作,總體來(lái)說(shuō),一個(gè)透視圖相當(dāng)于一個(gè)自定義界面。一個(gè)透視圖保存了當(dāng)前的菜單欄,工具欄按鈕以及視圖的大小,位置,顯示與否的所有狀態(tài),可以在下次切換回來(lái)時(shí)恢復(fù)原來(lái)的布局。 要關(guān)閉透視圖,在按鈕上點(diǎn)擊右鍵,在彈出的菜單中選擇Close即可。要再次顯示,如上段所示點(diǎn)擊對(duì)應(yīng)的視圖名稱(chēng)即可。如果發(fā)現(xiàn)在上面的列表中找不到,請(qǐng)點(diǎn)擊圖3.3透視圖切換器中的Other菜單項(xiàng),在下面所示的打開(kāi)透視圖對(duì)話(huà)框(圖3.4)中選中對(duì)應(yīng)的透視圖,然后點(diǎn)擊OK即可。 另一種切換的辦法是選擇主菜單 Window Open Perspective ,然后選中希望轉(zhuǎn)向的透視圖,如果沒(méi)有,可以繼續(xù)點(diǎn)擊菜單項(xiàng) Other來(lái)顯示打開(kāi)如圖3.4所示的透視圖對(duì)話(huà)框,選中列表中的透視圖后,再點(diǎn)擊對(duì)話(huà)框的OK按鈕即可切換到對(duì)應(yīng)的透視圖。 在圖3.4中有個(gè)復(fù)選框Show all,如果選中它可以在列表中看到和MyEclipse沖突的一些透視圖,例如WTP Java EE,因此一般來(lái)說(shuō)不要使用。MyEclipse的默認(rèn)透視圖是 MyEclipse Java Enterprise。本書(shū)中如沒(méi)有特殊說(shuō)明,都是用這個(gè)透視圖來(lái)完成所有操作。如果你使用了Java透視圖,那么有一些菜單項(xiàng)和工具欄按鈕就會(huì)無(wú)法看到。 圖3.4切換所有透視圖 1.1.4 視圖(View) 視圖是顯示在主界面中的一個(gè)小窗口,可以單獨(dú)最大化,最小化顯示,調(diào)整顯示大小和位置,以及關(guān)閉。除了工具欄,菜單欄和狀態(tài)欄之外,Eclipse的界面就是由這樣的一個(gè)個(gè)的小窗口組合起來(lái),像拼圖一樣構(gòu)成了Eclipse界面的主要部分。下面的是大綱視圖: 圖3.5視圖 每個(gè)視圖包括關(guān)閉按鈕,最大化和最小化按鈕,視圖工具欄以及視圖主體和邊框組成。視圖最頂部顯示的是標(biāo)題欄,拖動(dòng)這個(gè)標(biāo)題欄可以在主界面中移動(dòng)視圖的位置,單擊標(biāo)題欄則會(huì)切換顯示對(duì)應(yīng)視圖的內(nèi)容;雙擊標(biāo)題欄或者點(diǎn)擊最大化按鈕可以讓當(dāng)前視圖占據(jù)整個(gè)窗口。點(diǎn)擊將會(huì)關(guān)閉當(dāng)前的視圖。點(diǎn)擊按鈕最小化當(dāng)前視圖,這時(shí)候當(dāng)前視圖會(huì)縮小為一個(gè)圖標(biāo)并顯示在界面的上側(cè)欄,或者右側(cè)欄和狀態(tài)欄上,如下圖所示: 圖3.6最小化顯示的視圖 拖動(dòng)工具欄上的虛線(xiàn)可以更改最小化視圖顯示的位置。點(diǎn)擊按鈕可以恢復(fù)最小化之前的視圖位置和大小,點(diǎn)擊最小化后的圖標(biāo)可以暫時(shí)顯示(術(shù)語(yǔ)叫快速切換Fast View)視圖的完整內(nèi)容。鼠標(biāo)放在邊框上并拖動(dòng)可以調(diào)節(jié)視圖的顯示大小。點(diǎn)擊視圖上的工具欄按鈕可以執(zhí)行對(duì)應(yīng)的功能,而點(diǎn)擊按鈕則可以顯示和當(dāng)前視圖相關(guān)聯(lián)的功能菜單。 當(dāng)視圖不小心關(guān)閉后,可以通過(guò)下列菜單再次打開(kāi):Window Show View,如下圖所示,可以選擇要顯示的視圖: 圖3.7視圖列表子菜單 如果在上面沒(méi)有發(fā)現(xiàn)要顯示的視圖,可以點(diǎn)擊Other菜單,然后在所有的視圖列表中選擇所顯示的視圖,如下圖所示: 圖 3.8 顯示視圖對(duì)話(huà)框 可以在type filter text 這個(gè)框中輸入視圖的部分名字來(lái)模糊查找,這樣能夠快速定位到要顯示的視圖。 常見(jiàn)的視圖及其功能: Package Explorer Java包結(jié)構(gòu) Hierarchy 類(lèi)層次(繼承關(guān)系) Outline 大綱,顯示成員等 Problems 錯(cuò)誤,警告等信息 Tasks 任務(wù)如TODO標(biāo)記 Web Browser 網(wǎng)絡(luò)瀏覽器 Console 控制臺(tái),程序輸出 Servers 服務(wù)器列表和管理 Properties 屬性 Image Preview 圖片預(yù)覽 Snippets 代碼片段 1.1.5 上下文菜單(Context Menu) 在界面的任何地方點(diǎn)擊鼠標(biāo)右鍵所彈出的菜單叫上下文菜單,它能方便的顯示和鼠標(biāo)所在位置的組件或者元素動(dòng)態(tài)關(guān)聯(lián)的功能。 1.1.6 狀態(tài)欄(Status Bar) 在界面的最底部顯示的是狀態(tài)欄,相對(duì)來(lái)說(shuō),Eclipse的狀態(tài)欄功能大大弱化,它的主要功能都集中在視圖中。如下圖所示: 圖3.8 狀態(tài)欄 1.1.7 編輯器(Editor) 在界面的最中央會(huì)顯示代碼或者其它文本或圖形文件編輯器。這個(gè)編輯器和視圖非常相似,也能最大化和最小化,所不同的是會(huì)顯示多個(gè)標(biāo)簽頁(yè),也沒(méi)有工具欄按鈕,而且有一個(gè)很特殊的組件叫隔條,如圖中的代碼最左側(cè)的藍(lán)色豎條所示,隔條上會(huì)顯示行號(hào),警告,錯(cuò)誤,斷點(diǎn)等提示信息。編輯器里面的內(nèi)容沒(méi)有被修改時(shí),會(huì)在標(biāo)簽頁(yè)上顯示 * 號(hào)。如下圖所示: 圖 3.9 編輯器 當(dāng)同時(shí)打開(kāi)多個(gè)文件時(shí),會(huì)顯示標(biāo)簽頁(yè)下拉框例如4,數(shù)字表示了有多少個(gè)已打開(kāi)的文件未在編輯器區(qū)域中顯示。單擊可以顯示文件列表選擇框,可以在輸入框中輸入部分字母來(lái)模糊匹配已打開(kāi)的文件。如下圖所示: 圖3.10 文件列表選擇框 1.2 常見(jiàn)概念和操作 1.2.1 項(xiàng)目(Project) Eclipse中所有的可以編譯運(yùn)行的資源必須放在項(xiàng)目中,單獨(dú)打開(kāi)文件很多功能不可用。項(xiàng)目表示了一系列相關(guān)的文件和設(shè)置(例如類(lèi)路徑,編譯器級(jí)別,發(fā)布路徑等等的設(shè)置)。一般來(lái)說(shuō)目錄下的.project和.classpath這兩個(gè)文件描述了當(dāng)前項(xiàng)目的信息。打開(kāi)項(xiàng)目可以先選中單個(gè)或者多個(gè)項(xiàng)目,然后選擇菜單Project Open Project,或者點(diǎn)右鍵選擇菜單Open Project。關(guān)閉項(xiàng)目可以先選中要關(guān)閉的單個(gè)或者多個(gè)項(xiàng)目,然后選擇菜單Project Close Project,或者點(diǎn)右鍵選擇菜單Close Project。 1.2.2工作區(qū)(Workspace) 一個(gè)Eclipse可以有多個(gè)工作區(qū),每個(gè)工作區(qū)包含了多個(gè)項(xiàng)目,以及所有其余的設(shè)置信息例如界面布局,文字大小,服務(wù)器定義等等。但是一個(gè)工作區(qū)只能被單個(gè)Eclipse進(jìn)程使用。另外同一個(gè)項(xiàng)目也會(huì)加入到不同的工作區(qū)中。 注意:刪除工作區(qū)目錄的時(shí)候很可能誤刪位于工作區(qū)中的項(xiàng)目文件。工作區(qū)目錄會(huì)有一個(gè)名為.metadata的目錄來(lái)保存所有設(shè)置信息。在Eclipse啟動(dòng)的時(shí)候會(huì)讓你選擇要使用的工作區(qū)。如果輸入的工作區(qū)目錄不存在,Eclipse會(huì)自動(dòng)創(chuàng)建它。 1.2.3 導(dǎo)入、導(dǎo)出Java項(xiàng)目 導(dǎo)入項(xiàng)目 當(dāng)下載了包含Eclipse項(xiàng)目的源代碼文件后,我們可以把它導(dǎo)入到當(dāng)前的Eclipse工作區(qū)然后編輯和查看。點(diǎn)擊菜單File Import,然后在彈出的Import對(duì)話(huà)框中展開(kāi)General目錄,選擇Existing Projects into Workspace,接著點(diǎn)擊Next按鈕。當(dāng)選中單選鈕Select root directory:時(shí)可以點(diǎn)擊Browse按鈕選中包含項(xiàng)目的文件夾,如果包含項(xiàng)目的話(huà)就可以在中間的Projects列表框中顯示;而當(dāng)選中單選鈕Select archive file:時(shí)可以點(diǎn)擊Browse按鈕選中包含項(xiàng)目的ZIP壓縮包,如果包含項(xiàng)目的話(huà)就可以在中間的Projects列表框中顯示。最后點(diǎn)擊Finish按鈕就可以導(dǎo)入項(xiàng)目并打開(kāi)了。如下圖所示: 圖3.11 導(dǎo)入項(xiàng)目 導(dǎo)出項(xiàng)目 點(diǎn)擊菜單File Export,然后在彈出的Export對(duì)話(huà)框中展開(kāi)General目錄,選擇Archive File,接著點(diǎn)擊Next按鈕。然后在To archive file:輸出框中選中要保存的文件名,一般寫(xiě)成項(xiàng)目名.zip,然后點(diǎn)擊Finish按鈕即可導(dǎo)出當(dāng)前項(xiàng)目。還有一種方式是手工打包,用WinRAR或者WinZIP等工具都可以,先點(diǎn)擊工具欄上的打開(kāi)項(xiàng)目所在目錄,接著就可以用你喜歡的工具來(lái)打包代碼目錄了。 1.2.4快速修正代碼錯(cuò)誤 在Eclipse的編輯器中編寫(xiě)代碼以及編譯后會(huì)顯示檢查出來(lái)的錯(cuò)誤或者警告并在出問(wèn)題的代碼行首的隔條上顯示紅叉以及點(diǎn)亮的燈泡。左鍵點(diǎn)擊燈泡或者按下快捷鍵Ctrl+1 (或者菜單Edit Quick Fix)可以顯示修正意見(jiàn),并在修正前顯示預(yù)覽。如下圖所示: 圖 3.12 快速修正代碼錯(cuò)誤 1.2.5優(yōu)化導(dǎo)入列表 代碼中經(jīng)常會(huì)導(dǎo)入無(wú)用的包和類(lèi),通過(guò)菜單Source Organize Imports或者在編輯器的上下文菜單中選擇菜單項(xiàng)Source Organize Imports,或者按下快捷鍵Ctrl+Shift+O也可以來(lái)重新組織并去掉無(wú)用的類(lèi)和包。 1.2.6添加,修改,刪除JRE 通過(guò)菜單Window Preferences,然后選擇Java Installed JREs,可以打開(kāi)供在Eclipse編寫(xiě)程序所使用的JRE列表。復(fù)選框選中的JRE是默認(rèn)的JRE,它被項(xiàng)目里面所有的項(xiàng)目來(lái)作為編譯和啟動(dòng)的JRE(除非在項(xiàng)目的Build Path中指定了其它的JRE)??梢酝ㄟ^(guò)Add按鈕來(lái)添加新的JRE定義(在彈出的對(duì)話(huà)框中選擇Browse按鈕然后選中JDK的安裝目錄,之后點(diǎn)擊OK即可),Edit按鈕可以修改JRE定義,Remove按鈕可以刪除JRE定義,選中不同的JRE前面的復(fù)選框來(lái)把它作為默認(rèn)JRE。雖然MyEclipse能夠自動(dòng)找到并顯示一個(gè)JRE,但是強(qiáng)烈建議大家添加一個(gè)JDK來(lái)進(jìn)行開(kāi)發(fā),便于查看JDK類(lèi)源碼和編碼時(shí)能夠顯示提示信息。如下圖所示: 圖 3.13 配置安裝的JRE 1.2.7查看類(lèi)定義,層次和源碼 查看類(lèi)定義或者其源碼,可以在編輯器的上下文菜單中選擇Open Declaration,或者選擇菜單Navigate Open Declaration,或者按下F3鍵。如果這個(gè)類(lèi)關(guān)聯(lián)了源碼(例如JDK里面的類(lèi)),就可以看到源代碼,否則只能看到類(lèi)的方法和成員信息。 查看類(lèi)的繼承層次,可以在編輯器的上下文菜單中選擇Open Type Hierarchy,或者選擇菜單Navigate Open Type Hierarchy,或者按下F4鍵,或者將類(lèi)或者包拖放到Hierarchy視圖,就可以在Hierarchy視圖看到類(lèi)的繼承層次,之后就可以點(diǎn)擊對(duì)應(yīng)的類(lèi)看到定義了。 1.2.8查找類(lèi)文件(Open Type) 要快速找到某個(gè)類(lèi)型的定義,選擇菜單Navigate Open Type,或者按下Ctrl+Shift+T鍵,或者按下工具欄按鈕。這時(shí)候可以出現(xiàn)Open Type對(duì)話(huà)框,在Enter type name prefix or pattern輸入框中鍵入類(lèi)的頭幾個(gè)字母,或者也可以使用?和*這樣的通配符來(lái)模糊查找,對(duì)話(huà)框下面的列表中將會(huì)顯示匹配的類(lèi)文件,選中列表中顯示的單個(gè)或者多個(gè)類(lèi)定義來(lái)打開(kāi)它。如果這個(gè)類(lèi)關(guān)聯(lián)了源碼(例如JDK里面的類(lèi)),就可以看到源代碼,否則只能看到類(lèi)的方法和成員信息。如下圖所示: 圖 3.14 Open Type對(duì)話(huà)框 1.2.9源碼目錄,輸出路徑,Library和編譯器版本設(shè)置 點(diǎn)擊菜單 Project Properties 或者在Package Explorer項(xiàng)目節(jié)點(diǎn)上右鍵點(diǎn)擊選擇上下文菜單中的Properties,或者用快捷鍵Alt+Enter,可以打開(kāi)項(xiàng)目屬性對(duì)話(huà)框。選擇左側(cè)的Java Build Path,可以在右側(cè)顯示項(xiàng)目的類(lèi)路徑有關(guān)的設(shè)置標(biāo)簽頁(yè)。Source頁(yè)顯示了源代碼目錄(可以使用一個(gè)或者多個(gè),里面的源文件將會(huì)被編譯)以及Java源代碼編譯后產(chǎn)生的類(lèi)文件所存放的目錄。這些參數(shù)都可以修改,源代碼目錄可以添加或者刪除。Package Explorer 視圖默認(rèn)是不顯示類(lèi)文件的輸出目錄的。如下圖所示: 圖 3.15 源碼目錄和輸出路徑 點(diǎn)擊 Libraries頁(yè)面則可以設(shè)置當(dāng)前項(xiàng)目的類(lèi)路徑,這些類(lèi)庫(kù)在編譯源文件時(shí)使用。如下圖所示: 圖 3.16 類(lèi)庫(kù) Add JARs按鈕可以將當(dāng)前項(xiàng)目中的jar文件加入到類(lèi)路徑,Add External JARs則將添加項(xiàng)目外的jar文件到類(lèi)路徑,Add Variable添加變量,Add Library可以添加類(lèi)庫(kù)(一個(gè)或者多個(gè)jar文件的集合,由開(kāi)發(fā)工具定義和管理),Add Class Folder則添加目錄中的類(lèi)文件,Edit可以修改所選類(lèi)庫(kù)的設(shè)置,Remove則從類(lèi)路徑中刪除選中的類(lèi)庫(kù)。 在開(kāi)發(fā)中不可避免的需要設(shè)置源代碼的編譯級(jí)別,例如使用JDK1.6來(lái)開(kāi)發(fā)將來(lái)運(yùn)行于JDK1.4上的項(xiàng)目,那么這時(shí)候需要設(shè)置編譯器的等級(jí),否則將來(lái)的類(lèi)文件會(huì)因?yàn)榘姹具^(guò)高而不能被目標(biāo)JDK識(shí)別。點(diǎn)擊項(xiàng)目屬性對(duì)話(huà)框中的Java Compiler可以設(shè)置代碼的編譯器級(jí)別。如下圖所示: 圖3.17 編譯器級(jí)別 如果只是修改當(dāng)前項(xiàng)目的編譯器級(jí)別,可以選中復(fù)選框Enable project specific settings,然后在Compiler compliance level右側(cè)的下拉框中選擇目標(biāo)的編譯級(jí)別,例如5.0,1.4等等。還可以去掉Use default compliance settings復(fù)選框的選中狀態(tài),來(lái)進(jìn)一步設(shè)置。這些設(shè)置將會(huì)影響到源代碼中的語(yǔ)法錯(cuò)誤檢查,例如要在1.4級(jí)別的項(xiàng)目中用5.0的語(yǔ)法寫(xiě)代碼,肯定是會(huì)報(bào)錯(cuò)的。 如果要修改所有項(xiàng)目的默認(rèn)編譯級(jí)別,點(diǎn)擊Configure Workspace Settings來(lái)打開(kāi)全局設(shè)置對(duì)話(huà)框,這兩處的設(shè)置幾乎是一樣的,就不再贅述了。 1.2.10生成getter和setter 方法 在寫(xiě)JavaBean的時(shí)候常常要寫(xiě)一些模版化的getXXX()和setXXX()這樣的方法,我們可以用Eclipse來(lái)自動(dòng)生成這些模版化的方法。先寫(xiě)好 private String name; 這樣的變量定義,然后選擇菜單Source Generate Getters and Setters 或者在編輯器中點(diǎn)擊右鍵選擇菜單Source Generate Getters and Setters就可以打開(kāi)Generate Getters and Setters對(duì)話(huà)框,在對(duì)話(huà)框中選擇要生成的方法,然后點(diǎn)擊OK按鈕即可。 1.2.11格式化源代碼 有時(shí)候代碼手寫(xiě)的很亂,這時(shí)候可以先選中要格式化的代碼(不選擇是格式化當(dāng)前文件的所有代碼),通過(guò)選擇菜單Source Format 或者在編輯器中點(diǎn)擊右鍵選擇菜單Source Format 或者通過(guò)快捷鍵Ctrl+Shift+F來(lái)快速的將代碼格式化成便于閱讀的格式。這個(gè)操作在MyEclipse中也可以格式化XML,JSP,HTML等源文件。 1.2.12注釋和取消注釋 使用快捷鍵 Ctrl + / 可以將選中的代碼快速的添加或者去掉兩個(gè)斜線(xiàn)(/)風(fēng)格的注釋。 1.2.13手工和自動(dòng)編譯 如果是特別大的項(xiàng)目,例如幾千個(gè)源代碼,使用Eclipse來(lái)自動(dòng)編譯將會(huì)是一場(chǎng)噩夢(mèng)。每鍵入一行代碼都會(huì)自動(dòng)啟動(dòng)編譯器檢查進(jìn)程,嚴(yán)重時(shí)候屏幕甚至?xí)ㄖ粍?dòng)(這也是Eclipse的一個(gè)優(yōu)點(diǎn)之中的缺點(diǎn))。這時(shí)候可以切換Eclipse的自動(dòng)編譯為手工編譯。去掉菜單Project Build Automatically 的選中狀態(tài)后,項(xiàng)目就變成了手工編譯狀態(tài);再次點(diǎn)擊菜單可以重新切換會(huì)自動(dòng)編譯狀態(tài)。這時(shí)候再鍵入代碼就不會(huì)自動(dòng)檢查編譯錯(cuò)誤了,也不會(huì)生成編譯后的類(lèi)文件,這樣有助于快速的寫(xiě)代碼。此時(shí)要進(jìn)行編譯可以選擇菜單 Project Build Project 來(lái)編譯當(dāng)前項(xiàng)目或者 Project Build All 來(lái)編譯所有項(xiàng)目。 1.2.14直接粘貼Java源碼為類(lèi)文件 Eclipse 3.3 支持一個(gè)功能就是如果剪貼板上放的是Java源程序,例如如下所示的代碼復(fù)制到剪貼板上: public class YetAnother 那么點(diǎn)擊菜單 Edit Paste 或者在Package Explorer視圖的項(xiàng)目節(jié)點(diǎn)的上下文菜單中選擇 Paste,或者按下快捷鍵 Ctrl + V,那么Eclipse會(huì)根據(jù)這段代碼自動(dòng)生成一個(gè)新的.java 文件并把它加入到當(dāng)前項(xiàng)目的源代碼目錄中。 1.2.15復(fù)制項(xiàng)目中的文件 首先選中Package Explorer視圖的文件節(jié)點(diǎn)(Java類(lèi)或者普通文件都可以),那么點(diǎn)擊菜單 Edit Copy 或者在Package Explorer視圖的項(xiàng)目節(jié)點(diǎn)的上下文菜單中選擇 Copy,或者按下快捷鍵 Ctrl + C,之后再選擇粘貼的話(huà),會(huì)在要粘貼的位置創(chuàng)建原始文件的副本,如果是類(lèi)的話(huà)會(huì)自動(dòng)修改其包定義或者提示你輸入類(lèi)的新名稱(chēng)。如果你在Windows的文件瀏覽器中選中一個(gè)文件或者文件夾復(fù)制,之后再在Eclipse中粘貼,那么這個(gè)文件或者文件夾會(huì)立即復(fù)制并加入到當(dāng)前項(xiàng)目中,這樣可以快速的導(dǎo)入一些單獨(dú)的源代碼。 1.2.16斷點(diǎn)和調(diào)試器 在源代碼的隔條上雙擊鼠標(biāo)可以切換是否在當(dāng)前行設(shè)置斷點(diǎn)(break point),斷點(diǎn)以的形式顯示,如下圖所示: 圖 3.18 斷點(diǎn) 之后我們可以通過(guò)菜單RunDebug,或者Run Debug As 1 Java Application,或者通過(guò)工具欄按鈕,或者快捷鍵F11,或者在編輯器的上下文菜單中選擇 Debug As 1 Java Application 來(lái)啟動(dòng)調(diào)試器。當(dāng)調(diào)試器遇到斷點(diǎn)時(shí)就會(huì)掛起當(dāng)前線(xiàn)程并切換到調(diào)試透視圖。調(diào)試透視圖將會(huì)顯示Debug視圖,Variables視圖,Breakpoints視圖和Expressions視圖。例如我們的程序調(diào)試時(shí)如下所示: 圖 3.19 Debug 視圖 Debug 視圖中顯示了當(dāng)前所有運(yùn)行中的線(xiàn)程以及所執(zhí)行的代碼所在的位置。 這時(shí)候編輯器中將會(huì)以綠色高亮行背景指示執(zhí)行代碼的位置,如下圖所示: 圖 3.20 調(diào)試時(shí)候的代碼指示器 而Variables視圖則顯示當(dāng)前線(xiàn)程所執(zhí)行到的方法或者類(lèi)中的局部,全局等變量的值。 圖 3.21 Variables視圖 這時(shí)候線(xiàn)程已經(jīng)掛起,點(diǎn)擊Debug視圖的 Resume按鈕來(lái)繼續(xù)往下執(zhí)行,要重新掛起可以選擇某個(gè)線(xiàn)程,然后點(diǎn)擊 Suspend按鈕。要一行行的調(diào)試代碼,可以點(diǎn)擊 Step Over按鈕來(lái)往下執(zhí)行,或者按下F6鍵。要終止調(diào)試,可以點(diǎn)擊按鈕。 注意:Eclipse中的調(diào)試器功能很完善,但是使用也非常復(fù)雜,更詳細(xì)的資料可以參考IBM的開(kāi)發(fā)人員站點(diǎn)或者Eclipse的幫助文檔。限于篇幅這里就不再多介紹了。 1.2.17快速加入、刪除jar包到Build Path 首先將jar文件復(fù)制到項(xiàng)目中(參考復(fù)制項(xiàng)目中的文件一節(jié)),然后在Package Explorer視圖的jar文件上單擊右鍵,選擇菜單Build Path Add to Build Path 就可以將這個(gè)jar文件加入Build Path;要從項(xiàng)目的Build Path中去掉這個(gè)jar文件,可以選擇上下文菜單中的Build Path Remove from Build Path。 如果是MyEclipse的Web項(xiàng)目的話(huà),當(dāng)你將jar文件添加到WebRoot/WEB-INF/lib 下后,MyEclipse會(huì)自動(dòng)把它加入到當(dāng)前項(xiàng)目。如果發(fā)現(xiàn)新加入的文件沒(méi)有顯示在Eclipse中,可以在Package Explorer視圖中選擇上下文菜單中的Refresh或者按下快捷鍵F5就可以看到了。 1.2.18查看當(dāng)前類(lèi)被哪些類(lèi)引用 在項(xiàng)目中如果能看到類(lèi)或者變量,方法被哪些其它的類(lèi)所引用,將會(huì)大大的加快調(diào)試或者理解程序結(jié)構(gòu)的進(jìn)度。可以在編輯器的上下文菜單中選擇References Project來(lái)顯示當(dāng)前項(xiàng)目哪些類(lèi)引用到了它,或者References Workspace來(lái)看整個(gè)工作區(qū)里面哪些類(lèi)引用到了它。查找結(jié)果顯示在Search視圖中。 1.2.19設(shè)置編輯器字體,顏色和顯示行號(hào) 默認(rèn)情況下Eclipse的代碼編輯器是不顯示行號(hào)的,要顯示它可以通過(guò)菜單Window Preferences 來(lái)打開(kāi)Preferences設(shè)置對(duì)話(huà)框,幾乎所有Eclipse的設(shè)置選項(xiàng)都可以在這里找到。要顯示行號(hào),可以展開(kāi)節(jié)點(diǎn)General Editors Text Editors,在右側(cè)的設(shè)置中選中復(fù)選框 Show line numbers即可。如圖所示: 圖 3.22a 顯示行號(hào) 然而最快的方式還是在編輯器隔條(最左側(cè)欄)上點(diǎn)擊右鍵,在彈出的快捷菜單上選擇復(fù)選菜單Show Line Numbers即可,之后就可以看到行號(hào)了。此過(guò)程如下圖3.22b所示。顯示了行號(hào)的編輯器如圖3.23所示。 圖 3.22b 通過(guò)編輯器隔條右鍵點(diǎn)擊顯示行號(hào) 圖 3.23 顯示了行號(hào)的編輯器 要修改編輯器的字體,可以選擇Preferences對(duì)話(huà)框的General Appearance Colors and Fonts,之后就可以在右側(cè)修改字體了。 注意:編輯器的字體是設(shè)置BasicText Font,之后點(diǎn)擊Change按鈕即可。如下圖所示: 圖 3.24 修改編輯器字體 1.2.20 Link文件 Eclipse支持一種特殊的概念叫Link文件,其實(shí)和Windows的快捷方式這個(gè)概念是非常像的。選擇菜單File New File 或者 File New Folder,可以打開(kāi)新建文件或者目錄的對(duì)話(huà)框,如下圖所示: 圖 3.25 Link 方式創(chuàng)建文件 這時(shí)候如果點(diǎn)擊Advanced按鈕,然后選中復(fù)選框Link to file in the file system,之后就可以點(diǎn)擊Browse按鈕來(lái)選中項(xiàng)目之外的其它文件。此時(shí)創(chuàng)建的文件就叫一個(gè)Link文件,相當(dāng)于快捷方式,真正的內(nèi)容是存儲(chǔ)在c:HelloWorld.java中,但是對(duì)項(xiàng)目中的這個(gè)文件的修改會(huì)自動(dòng)的同步到c:HelloWorld.java中去,就好像這個(gè)文件是在當(dāng)前項(xiàng)目中一樣。創(chuàng)建完畢的文件圖標(biāo)上會(huì)顯示一個(gè)箭頭來(lái)說(shuō)明這個(gè)文件是個(gè)Link文件,看起來(lái)像這樣;目錄的圖標(biāo)顯示起來(lái)像這樣:。Link目錄中的Java源代碼也可以加入到源代碼目錄中去進(jìn)行編譯。 注意:因?yàn)?Link 方式的文件依賴(lài)于文件系統(tǒng)的絕對(duì)路徑,因此不建議使用這種方式來(lái)把你的項(xiàng)目打包發(fā)給別人來(lái)使用。 1.2.21安裝插件 我們假定的是C:JavaMyEclipse6.0為你的MyEclipse的安裝目錄,一般的Eclipse插件只需要復(fù)制到C:JavaMyEclipse6.0eclipseplugins 下面就可以安裝完畢,這樣的插件一般是單獨(dú)的jar文件。如果發(fā)現(xiàn)下載的插件是個(gè)ZIP格式而且發(fā)現(xiàn)解壓縮后帶有eclipse子目錄,那需要把它直接復(fù)制到C:JavaMyEclipse6.0覆蓋eclipse目錄即可完成安裝(注意:不要?jiǎng)h除老的eclipse目錄)。 1.2.22獲取幫助和閱讀幫助文檔 在任何位置按下F1鍵,Eclipse會(huì)顯示相關(guān)的幫助文檔;完整的幫助文檔可以通過(guò)菜單Help Help Contents 來(lái)閱讀。絕大多數(shù)的MyEclipse和Eclipse的操作說(shuō)明,相關(guān)的一些教程,都可以在幫助文檔中找到,雖然內(nèi)容是英文的,但是內(nèi)容是非常全面,圖文并茂的。MyEclipse Learning Center 里的內(nèi)容是所有MyEclipse自帶的操作和教程文檔。 1.2.23 CVS團(tuán)隊(duì)源代碼管理(在線(xiàn)閱讀) 請(qǐng)參考IBM開(kāi)發(fā)人員社區(qū)的一篇文章來(lái)學(xué)習(xí): 使用 Eclipse 平臺(tái)共享代碼Eclipse 如何使用源代碼版本控制 /developerworks/cn/linux/opensource/os-ecshare/index.html。 1.2.24 修改文件的字符編碼 Eclipse中不同的文件會(huì)采取不同的默認(rèn)編碼,還有的項(xiàng)目會(huì)用UTF-8等編碼。例如 .properties 文件默認(rèn)只能保存 ISO8859-1 的編碼,要想在這樣的文件中寫(xiě)漢字,只需要更改字符集為對(duì)應(yīng)的編碼即可。修改方法: 右鍵點(diǎn)擊文件選擇菜單 Properties,然后在 Text file encoding 下面選擇單選鈕 Other,接著點(diǎn)擊右側(cè)的編碼列表,一般來(lái)說(shuō)中文選擇 GBK 就好了。 如果你發(fā)現(xiàn) .java 文件(Linux平臺(tái)下)是 UTF-8 編碼的,你也可以修改成 .GBK 的,否則拿到 Windows 下可能就出現(xiàn)亂碼問(wèn)題了。 二,安卓程序開(kāi)發(fā)指南應(yīng)用程序基礎(chǔ)Application Fundamentals關(guān)鍵類(lèi)1. Activity 2. Service 3. BroadcastReceiver 4. ContentProvider 5. Intent Android應(yīng)用程序使用Java做為開(kāi)發(fā)語(yǔ)言。aapt工具把編譯后的Java代碼連同其它應(yīng)用程序需要的數(shù)據(jù)和資源文件一起打包到一個(gè)Android包文件中,這個(gè)文件使用.apk做為擴(kuò)展名,它是分發(fā)應(yīng)用程序并安裝到移動(dòng)設(shè)備的媒介,用戶(hù)只需下載并安裝此文件到他們的設(shè)備。單一.apk文件中的所有代碼被認(rèn)為是一個(gè)應(yīng)用程序。從很多方面來(lái)看,每個(gè)Android應(yīng)用程序都存在于它自己的世界之中: 默認(rèn)情況下,每個(gè)應(yīng)用程序均運(yùn)行于它自己的Linux進(jìn)程中。當(dāng)應(yīng)用程序中的任意代碼開(kāi)始執(zhí)行時(shí),Android啟動(dòng)一個(gè)進(jìn)程,而當(dāng)不再需要此進(jìn)程而其它應(yīng)用程序又需要系統(tǒng)資源時(shí),則關(guān)閉這個(gè)進(jìn)程。 每個(gè)進(jìn)程都運(yùn)行于自己的Java虛擬機(jī)(VM)中。所以應(yīng)用程序代碼實(shí)際上與其它應(yīng)用程序的代碼是隔絕的。 默認(rèn)情況下,每個(gè)應(yīng)用程序均被賦予一個(gè)唯一的Linux用戶(hù)ID,并加以權(quán)限設(shè)置,使得應(yīng)用程序的文件僅對(duì)這個(gè)用戶(hù)、這個(gè)應(yīng)用程序可見(jiàn)。當(dāng)然,也有其它的方法使得這些文件同樣能為別的應(yīng)用程序所訪(fǎng)問(wèn)。 使兩個(gè)應(yīng)用程序共有同一個(gè)用戶(hù)ID是可行的,這種情況下他們可以看到彼此的文件。從系統(tǒng)資源維護(hù)的角度來(lái)看,擁有同一個(gè)ID的應(yīng)用程序也將在運(yùn)行時(shí)使用同一個(gè)Linux進(jìn)程,以及同一個(gè)虛擬機(jī)。應(yīng)用程序組件Android的核心功能之一就是一個(gè)應(yīng)用程序可以使用其它應(yīng)用程序的元素(如果那個(gè)應(yīng)用程序允許的話(huà))。比如說(shuō),如果你的應(yīng)用程序需要一個(gè)圖片卷動(dòng)列表,而另一個(gè)應(yīng)用程序已經(jīng)開(kāi)發(fā)了一個(gè)合用的而又允許別人使用的話(huà),你可以直接調(diào)用那個(gè)卷動(dòng)列表來(lái)完成工作,而不用自己再開(kāi)發(fā)一個(gè)。你的應(yīng)用程序并沒(méi)有吸納或鏈接其它應(yīng)用程序的代碼,它只是在有需求的時(shí)候啟動(dòng)了其它應(yīng)用程序的那個(gè)功能部分。為達(dá)到這個(gè)目的,系統(tǒng)必須在一個(gè)應(yīng)用程序的一部分被需要時(shí)啟動(dòng)這個(gè)應(yīng)用程序,并將那個(gè)部分的Java對(duì)象實(shí)例化。與在其它系統(tǒng)上的應(yīng)用程序不同,Android應(yīng)用程序沒(méi)有為應(yīng)用準(zhǔn)備一個(gè)單獨(dú)的程序入口(比如說(shuō),沒(méi)有main()方法), 而是為系統(tǒng)依照需求實(shí)例化提供了基本的組件。共有四種組件類(lèi)型:ActivityActivity是為用戶(hù)操作而展示的可視化用戶(hù)界面。比如說(shuō),一個(gè)activity可以展示一個(gè)菜單項(xiàng)列表供用戶(hù)選擇,或者顯示一些包含說(shuō)明的照片。一個(gè)短消息應(yīng)用程序可以包括一個(gè)用于顯示做為發(fā)送對(duì)象的聯(lián)系人的列表的activity,一個(gè)給選定的聯(lián)系人寫(xiě)短信的activity以及翻閱以前的短信和改變?cè)O(shè)置的activity。盡管它們一起組成了一個(gè)內(nèi)聚的用戶(hù)界面,但其中每個(gè)activity都與其它的保持獨(dú)立。每個(gè)都是以Activity類(lèi)為基類(lèi)的子類(lèi)實(shí)現(xiàn)。一個(gè)應(yīng)用程序可以只有一個(gè)activity,或者,如剛才提到的短信應(yīng)用程序那樣,包含很多個(gè)。每個(gè)activity的作用,以及其數(shù)目,自然取決于應(yīng)用程序及其設(shè)計(jì)。一般情況下,總有一個(gè)應(yīng)用程序被標(biāo)記為用戶(hù)在應(yīng)用程序啟動(dòng)的時(shí)候第一個(gè)看到的。從一個(gè)activity轉(zhuǎn)向另一個(gè)的方式是靠當(dāng)前的activity啟動(dòng)下一個(gè)。每個(gè)activity都被給予一個(gè)默認(rèn)的窗口以進(jìn)行繪制。一般情況下,這個(gè)窗口是滿(mǎn)屏的,但它也可以是一個(gè)小的位于其它窗口之上的浮動(dòng)窗口。一個(gè)activity也可以使用超過(guò)一個(gè)的窗口比如,在activity運(yùn)行過(guò)程中彈出的一個(gè)供用戶(hù)反應(yīng)的小對(duì)話(huà)框,或是當(dāng)用戶(hù)選擇了屏幕上特定項(xiàng)目后顯示的必要信息。窗口顯示的可視內(nèi)容是由一系列視圖構(gòu)成的,這些視圖均繼承自 View 基類(lèi)。每個(gè)視圖均控制著窗口中一塊特定的矩形空間。父級(jí)視圖包含并組織它子視圖的布局。葉節(jié)點(diǎn)視圖(位于視圖層次最底端)在它們控制的矩形中進(jìn)行繪制,并對(duì)用戶(hù)對(duì)其直接操作做出響應(yīng)。所以,視圖是activity與用戶(hù)進(jìn)行交互的界面。比如說(shuō),視圖可以顯示一個(gè)小圖片,并在用戶(hù)指點(diǎn)它的時(shí)候產(chǎn)生動(dòng)作。Android有很多既定的視圖供用戶(hù)直接使用,包括按鈕、文本域、卷軸、菜單項(xiàng)、復(fù)選框等等。視圖層次是由Activity.setContentView() 方法放入activity的窗口之中的。上下文視圖是位于視圖層次根位置的視圖對(duì)象。(參見(jiàn)用戶(hù)界面章節(jié)獲取關(guān)于視圖及層次的更多信息。)服務(wù)服務(wù)沒(méi)有可視化的用戶(hù)界面,而是在一段時(shí)間內(nèi)在后臺(tái)運(yùn)行。比如說(shuō),一個(gè)服務(wù)可以在用戶(hù)做其它事情的時(shí)候在后臺(tái)播放背景音樂(lè)、從網(wǎng)絡(luò)上獲取一些數(shù)據(jù)或者計(jì)算一些東西并提供給需要這個(gè)運(yùn)算結(jié)果的activity使用。每個(gè)服務(wù)都繼承自Service基類(lèi)。一個(gè)媒體播放器播放播放列表中的曲目是一個(gè)不錯(cuò)的例子。播放器應(yīng)用程序可能有一個(gè)或多個(gè)activity來(lái)給用戶(hù)選擇歌曲并進(jìn)行播放。然而,音樂(lè)播放這個(gè)任務(wù)本身不應(yīng)該為任何activity所處理,因?yàn)橛脩?hù)期望在他們離開(kāi)播放器應(yīng)用程序而開(kāi)始做別的事情時(shí),音樂(lè)仍在繼續(xù)播放。為達(dá)到這個(gè)目的,媒體播放器activity應(yīng)該啟用一個(gè)運(yùn)行于后臺(tái)的服務(wù)。而系統(tǒng)將在這個(gè)activity不再顯示于屏幕之后,仍維持音樂(lè)播放服務(wù)的運(yùn)行。你可以連接至(綁定)一個(gè)正在運(yùn)行的服務(wù)(如果服務(wù)沒(méi)有運(yùn)行,則啟動(dòng)之)。連接之后,你可以通過(guò)那個(gè)服務(wù)暴露出來(lái)的接口與服務(wù)進(jìn)行通訊。對(duì)于音樂(lè)服務(wù)來(lái)說(shuō),這個(gè)接口可以允許用戶(hù)暫停、回退、停止以及重新開(kāi)始播放。如同activity和其它組件一樣,服務(wù)運(yùn)行于應(yīng)用程序進(jìn)程的主線(xiàn)程內(nèi)。所以它不會(huì)對(duì)其它組件或用戶(hù)界面有任何干擾,它們一般會(huì)派生一個(gè)新線(xiàn)程來(lái)進(jìn)行一些耗時(shí)任務(wù)(比如音樂(lè)回放)。參見(jiàn)下述 進(jìn)程和線(xiàn)程 。廣播接收器廣播接收器是一個(gè)專(zhuān)注于接收廣播通知信息,并做出對(duì)應(yīng)處理的組件。很多廣播是源自于系統(tǒng)代碼的比如,通知時(shí)區(qū)改變、電池電量低、拍攝了一張照片或者用戶(hù)改變了語(yǔ)言選項(xiàng)。應(yīng)用程序也可以進(jìn)行廣播比如說(shuō),通知其它應(yīng)用程序一些數(shù)據(jù)下載完成并處于可用狀態(tài)。應(yīng)用程序可以擁有任意數(shù)量的廣播接收器以對(duì)所有它感興趣的通知信息予以響應(yīng)。所有的接收器均繼承自BroadcastReceiver基類(lèi)。廣播接收器沒(méi)有用戶(hù)界面。然而,它們可以啟動(dòng)一個(gè)activity來(lái)響應(yīng)它們收到的信息,或者用NotificationManager來(lái)通知用戶(hù)。通知可以用很多種方式來(lái)吸引用戶(hù)的注意力閃動(dòng)背燈、震動(dòng)、播放聲音等等。一般來(lái)說(shuō)是在狀態(tài)欄上放一個(gè)持久的圖標(biāo),用戶(hù)可以打開(kāi)它并獲取消息。內(nèi)容提供者內(nèi)容提供者將一些特定的應(yīng)用程序數(shù)據(jù)供給其它應(yīng)用程序使用。數(shù)據(jù)可以存儲(chǔ)于文件系統(tǒng)、SQLite數(shù)據(jù)庫(kù)或其它方式。內(nèi)容提供者繼承于ContentProvider 基類(lèi),為其它應(yīng)用程序取用和存儲(chǔ)它管理的數(shù)據(jù)實(shí)現(xiàn)了一套標(biāo)準(zhǔn)方法。然而,應(yīng)用程序并不直接調(diào)用這些方法,而是使用一個(gè) ContentResolver 對(duì)象,調(diào)用它的方法作為替代。ContentResolver可以與任意內(nèi)容提供者進(jìn)行會(huì)話(huà),與其合作來(lái)對(duì)所有相關(guān)交互通訊進(jìn)行管理。參閱獨(dú)立的內(nèi)容提供者章節(jié)獲得更多關(guān)于使用內(nèi)容提供者的內(nèi)容。每當(dāng)出現(xiàn)一個(gè)需要被特定組件處理的請(qǐng)求時(shí),Android會(huì)確保那個(gè)組件的應(yīng)用程序進(jìn)程處于運(yùn)行狀態(tài),或在必要的時(shí)候啟動(dòng)它。并確保那個(gè)相應(yīng)組件的實(shí)例的存在,必要時(shí)會(huì)創(chuàng)建那個(gè)實(shí)例。激活組件:intent當(dāng)接收到ContentResolver發(fā)出的請(qǐng)求后,內(nèi)容提供者被激活。而其它三種組件activity、服務(wù)和廣播接收器被一種叫做intent的異步消息所激活。intent是一個(gè)保存著消息內(nèi)容的Intent對(duì)象。對(duì)于activity和服務(wù)來(lái)說(shuō),它指明了請(qǐng)求的操作名稱(chēng)以及作為操作對(duì)象的數(shù)據(jù)的URI和其它一些信息。比如說(shuō),它可以承載對(duì)一個(gè)activity的請(qǐng)求,讓它為用戶(hù)顯示一張圖片,或者讓用戶(hù)編輯一些文本。而對(duì)于廣播接收器而言,Intent對(duì)象指明了聲明的行為。比如,它可以對(duì)所有感興趣的對(duì)象聲明照相按鈕被按下。對(duì)于每種組件來(lái)說(shuō),激活的方法是不同的: 通過(guò)傳遞一個(gè)Intent對(duì)象至 Context.startActivity()或Activity.startActivityForResult()以載入(或指定新工作給)一個(gè)activity。相應(yīng)的activity可以通過(guò)調(diào)用 getIntent() 方法來(lái)查看激活它的intent。Android通過(guò)調(diào)用activity的onNewIntent()方法來(lái)傳遞給它繼發(fā)的intent。一個(gè)activity經(jīng)常啟動(dòng)了下一個(gè)。如果它期望它所啟動(dòng)的那個(gè)activity返回一個(gè)結(jié)果,它會(huì)以調(diào)用startActivityForResult()來(lái)取代startActivity()。比如說(shuō),如果它啟動(dòng)了另外一個(gè)activity以使用戶(hù)挑選一張照片,它也許想知道哪張照片被選中了。結(jié)果將會(huì)被封裝在一個(gè)Intent對(duì)象中,并傳遞給發(fā)出調(diào)用的activity的onActivityResult() 方法。 通過(guò)傳遞一個(gè)Intent對(duì)象至Context.startService()將啟動(dòng)一個(gè)服務(wù)(或給予正在運(yùn)行的服務(wù)以一個(gè)新的指令)。Android調(diào)用服務(wù)的 onStart()方法并將Intent對(duì)象傳遞給它。與此類(lèi)似,一個(gè)Intent可以被調(diào)用組件傳遞給 Context.bindService()以獲取一個(gè)正在運(yùn)行的目標(biāo)服務(wù)的連接。這個(gè)服務(wù)會(huì)經(jīng)由onBind() 方法的調(diào)用獲取這個(gè)Intent對(duì)象(如果服務(wù)尚未啟動(dòng),bindService()會(huì)先啟動(dòng)它)。比如說(shuō),一個(gè)activity可以連接至前述的音樂(lè)回放服務(wù),并提供給用戶(hù)一個(gè)可操作的(用戶(hù)界面)以對(duì)回放進(jìn)行控制。這個(gè)activity可以調(diào)用 bindService() 來(lái)建立連接,然后調(diào)用服務(wù)中定義的對(duì)象來(lái)影響回放。后面一節(jié):遠(yuǎn)程方法調(diào)用將更詳細(xì)的闡明如何綁定至服務(wù)。 應(yīng)用程序可以憑借將Intent對(duì)象傳遞給 Context.sendBroadcast() ,Context.sendOrderedBroadcast(), 以及Context.sendStickyBroadcast()和其它類(lèi)似方法來(lái)產(chǎn)生一個(gè)廣播。Android會(huì)調(diào)用所有對(duì)此廣播有興趣的廣播接收器的 onReceive()方法,將intent傳遞給它們。 欲了解更多intent消息的信息,請(qǐng)參閱獨(dú)立章節(jié) Intent和Intent濾過(guò)器。關(guān)閉組件內(nèi)容提供者僅在響應(yīng)ContentResolver提出請(qǐng)求的時(shí)候激活。而一個(gè)廣播接收器僅在響應(yīng)廣播信息的時(shí)候激活。所以,沒(méi)有必要去顯式的關(guān)閉這些組件。而activity則不同,它提供了用戶(hù)界面,并與用戶(hù)進(jìn)行會(huì)話(huà)。所以只要會(huì)話(huà)依然持續(xù),哪怕對(duì)話(huà)過(guò)程暫時(shí)停頓,它都會(huì)一直保持激活狀態(tài)。與此相似,服務(wù)也會(huì)在很長(zhǎng)一段時(shí)間內(nèi)保持運(yùn)行。所以Android為關(guān)閉activity和服務(wù)提供了一系列的方法。 可以通過(guò)調(diào)用它的finish()方法來(lái)關(guān)閉一個(gè)activity。一個(gè)activity可以通過(guò)調(diào)用另外一個(gè)activity(它用startActivityForResult() 啟動(dòng)的)的finishActivity()方法來(lái)關(guān)閉它。 服務(wù)可以通過(guò)調(diào)用它的stopSelf()方法來(lái)停止,或者調(diào)用 Context.stopService()。 系統(tǒng)也會(huì)在組件不再被使用的時(shí)候或者Android需要為活動(dòng)組件聲明更多內(nèi)存的時(shí)候關(guān)閉它。后面的 組件的生命周期一節(jié),將對(duì)這種可能及附屬情況進(jìn)行更詳細(xì)的討論。manifest文件當(dāng)Android啟動(dòng)一個(gè)應(yīng)用程序組件之前,它必須知道那個(gè)組件是存在的。所以,應(yīng)用程序會(huì)在一個(gè)manifest文件中聲明它的組件,這個(gè)文件會(huì)被打包到Android包中。這個(gè).apk文件還將涵括應(yīng)用程序的代碼、文件以及其它資源。這個(gè)manifest文件以XML作為結(jié)構(gòu)格式,而且對(duì)于所有應(yīng)用程序,都叫做AndroidManifest.xml。為聲明一個(gè)應(yīng)用程序組件,它還會(huì)做很多額外工作,比如指明應(yīng)用程序所需鏈接到的庫(kù)的名稱(chēng)(除了默認(rèn)的Android庫(kù)之外)以及聲明應(yīng)用程序期望獲得的各種權(quán)限。但manifest文件的主要功能仍然是向Android聲明應(yīng)用程序的組件。舉例說(shuō)明,一個(gè)activity可以如下聲明: . . . 元素的name屬性指定了實(shí)現(xiàn)了這個(gè)activity的 Activity的子類(lèi)。icon和label屬性指向了包含展示給用戶(hù)的此activity的圖標(biāo)和標(biāo)簽的資源文件。其它組件也以類(lèi)似的方法聲明 元素用于聲明服務(wù), 元素用于聲明廣播接收器,而 元素用于聲明內(nèi)容提供者。 manifest文件中未進(jìn)行聲明的activity、服務(wù)以及內(nèi)容提供者將不為系統(tǒng)所見(jiàn),從而也就不會(huì)被運(yùn)行。然而,廣播接收器既可以在manifest文件中聲明,也可以在代碼中進(jìn)行動(dòng)態(tài)的創(chuàng)建,并以調(diào)用Context.registerReceiver()的方式注冊(cè)至系統(tǒng)。欲更多了解如何為你的應(yīng)用程序構(gòu)建manifest文件,請(qǐng)參閱AndroidManifest.xml文件一章。Intent過(guò)濾器Intent對(duì)象可以被顯式的指定目標(biāo)組件。如果進(jìn)行了這種指定,Android會(huì)找到這個(gè)組件(依據(jù)manifest文件中的聲明)并激活它。但如果Intent沒(méi)有進(jìn)行顯式的指定,Android就必須為它找到對(duì)于intent來(lái)說(shuō)最合適的組件。這個(gè)過(guò)程是通過(guò)比較Intent對(duì)象和所有可能對(duì)象

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論