




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