Android移動應用設計與開發(fā)-第02章_第1頁
Android移動應用設計與開發(fā)-第02章_第2頁
Android移動應用設計與開發(fā)-第02章_第3頁
Android移動應用設計與開發(fā)-第02章_第4頁
Android移動應用設計與開發(fā)-第02章_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

手機系統(tǒng)開發(fā)與設計計算機學院/任建吉renjianji@第2周手機系統(tǒng)開發(fā)與設計2.1Android體系結構應用程序應用程序框架函數(shù)庫Android運行庫Linux內核2.2Activity本周小結

本周導讀1.2、用Eclipse創(chuàng)建Android應用程序1.2.1、創(chuàng)建HelloWorld項目1、項目名稱2、應用程序名稱3、包名稱4、Activity繼承類5、最低SDKAPI版本1.2.2、Android項目目錄結構1、src/:java源文件2、gen/:R.java文件,UI資源標識符3、android/:android運行時類文件包4、res/:資源目錄Drawables/:包含圖片和圖標文件Layout/:包含UI元素的布局xml文件Values/:包含string.xml、array.xml、style.xml、color.xml等變量初始值文件anim/:包含動畫文件xml/:應用部件資源文件raw/:包含任意二進制文件menu/:包含定義菜單的xml文件6、assets/:包含文件目錄結構(被編譯到.apk文件中)7、libs/:包含私有庫8、AndroidManifest.xml:應用部署文件9、UI布局文件1.2.3、android程序運行配置1、創(chuàng)建運行配置文件2、Android選項卡3、Target選項卡1.2.4、android程序編譯1、字節(jié)碼文件*.dex2、包文件*.apk虛擬設備(AVD)設置虛擬設備環(huán)境1、啟動AVDEclipse啟動命令行啟動:android2、AVD內容VirtualdeviceInstallpackagesAvailablepackages1.3.2、建立AVD1、新建:Target,SDCard,Skin,Hardware2、編輯常用的adb命令adbshell鏈接手機或模擬器adbpush上傳文件adbpull下載文件eg:adbpushkeydata/app就是將key文件上傳到用戶目錄中adbinstall<*.apk>安裝程序adbuninstallcom.example.helloworld如何查看packagename:在"/data/app/"目錄下adbdevices列出所有連接的設備準備工作:配置adb路徑到環(huán)境變量的path中,即所設置的sdk路徑D:\adt-bundle-windows-x86-20131030\sdk\platform-tools刪掉activity_main.xml文件中的語句【android:text=“@string/hello_world”;】

刪掉activity_main.xml語句【android:text=“@string/hello_world”;】后的運行結果在布局文件“activity_main.xml”中“TextView”為控件添加id【android:id="@+id/myTextView"】在HelloWorld.java文件中添加聲明語句

【importandroid.widget.TextView;】在HelloWorld.java文件中引用控件,添加語句【findViewById(R.id.myTextView);】并進行強制類型轉換,變?yōu)椤綯extViewmyTextView=(TextView)findViewById(R.id.myTextView);】為控件添加顯示內容

【myTextView.setText("您好,歡迎來到Android世界!");】運行結果。手機系統(tǒng)開發(fā)與設計計算機學院/任建吉renjianji@本節(jié)學習目標:了解Android的體系結構1、Linux內核:操作系統(tǒng),硬件抽象層和硬件驅動2、代碼庫:DalvikVM、Webkit瀏覽器、SQLite數(shù)據(jù)庫、Android核心庫3、Android應用框架:ActivityManager、ResourceManager、TelephonyManager、WindowManager、ContextManager等4、軟件應用:Contacts,phone,browser等2.1Android體系結構Android系統(tǒng)采用了分層的架構,總共四層,由上到下分別是應用程序層、應用程序框架層、系統(tǒng)運行庫層和Linux核心層,每一層都使用其下面各層所提供的服務。

2.1Android體系結構Linux內核Linux3.4內核(Android4.4)硬件和其他軟件堆層之間的一個抽象隔離層提供安全機制、內存管理、進程管理、網(wǎng)絡協(xié)議堆棧、和驅動程序等Android中基本的Linux命令Android支持的linuxcommand不多,在/system/bin下面可以找到,其中大部分都是Android的工具,只有一小部分是linux原有的命令cat命令,cat/proc/cpuinfo查看設備cpu信息。Ctrl+C退出。top命令,相當于win下的任務管理器,可以看到所有運行的后臺任務,以及它們的cpu占用率。Ctrl+C退出。

2.1Android體系結構中間件層由函數(shù)庫和Android運行時構成函數(shù)庫,主要提供一組基于C/C++的函數(shù)庫SurfaceManager,支持顯示子系統(tǒng)的訪問,提供應用程序與2D、3D圖像層的平滑連接MediaFramework,實現(xiàn)音視頻的播放和錄制功能SQLite,輕量級的關系數(shù)據(jù)庫引擎OpenGLES,基于3D圖像加速FreeType,位圖與矢量字體渲染W(wǎng)ebKit,Web瀏覽器引擎SGL,2D圖像引擎SSL,數(shù)據(jù)加密與安全傳輸?shù)暮瘮?shù)庫Libc,標準C運行庫,Linux系統(tǒng)中底層應用程序開發(fā)接口2.1Android體系結構中間件層Android運行時核心庫,提供Android系統(tǒng)的特有函數(shù)功能和Java語言函數(shù)功能Dalvik虛擬機,是經(jīng)過優(yōu)化的多實例虛擬機,基于寄存器架構設計,實現(xiàn)基于Linux內核的線程管理和底層內存管理,采用專用的Dalvik可執(zhí)行格式(.dex),該格式適合內存和處理器速度受限的系統(tǒng)2.1Android體系結構應用程序框架,提供Android平臺基本的管理功能和組件重用機制ActivityManager,管理應用程序的生命周期WindowsManager,啟動應用程序的窗體ContentProvider,共享私有數(shù)據(jù),實現(xiàn)跨進程的數(shù)據(jù)訪問PackageManager,管理安裝在Android系統(tǒng)內的應用程序2.1Android體系結構應用程序框架TeleghonyManager,管理與撥打和接聽電話的相關功能ResourceManager,允許應用程序使用非代碼資源LocationManager,管理與地圖相關的服務功能NotificationManager,允許應用程序在狀態(tài)欄中顯示提示信息2.1Android體系結構應用程序提供一系列的核心應用程序包括電子郵件客戶端、瀏覽器、通訊錄和日歷等2.3、四種Android組件2.3.1、Activity類(顯示UI用戶界面)Activity通俗地講就是用戶界面,它有其自身的生命周期。一個應用程序通常包含多個Activity,它們可以互相切換。Activity的使用需要在manifest文件中進行聲明。Android系統(tǒng)是通過任務棧來管理Activity的。當一個Activity啟動時,會把它壓入到該Task的堆棧中,當用戶按返回鍵或者結束掉該Activity時,它會從該Task的堆棧中彈出。當用戶按Home鍵時,當前應用程序的任務棧將轉到后臺,該任務棧中保存著壓入其中的各個Activity的狀態(tài)。此時,用戶可以啟動任意其他應用程序,如果是另外的應用程序,那么它所在的任務棧將處于前臺,用戶可以與之進行相應地交互1、Activity功能顯示由Views類擴展的UI元素響應系統(tǒng)和用戶事件2、Activity實現(xiàn)繼承Activity類,實現(xiàn)自定義子類覆蓋onCreate()方法,進行初始化View的UI元素使用startActivity()或startActivityForResult()方法,實現(xiàn)各Activity切換見HelloWorld.java例子手機的撥號器,圖片瀏覽器,等大部分app均為activity的2.3.2、ServiceService不直接與用戶進行交互,沒有用戶界面,能夠長期在后臺運行,且比Activity具有更高的優(yōu)先級,在系統(tǒng)資源緊張時不會輕易被Android系統(tǒng)終止。每個服務都是從Service基類中派生的。Service的生命周期沒有Activity那樣復雜,也是從onCreate()到onDestory()結束,但經(jīng)歷的生命周期方法要更少,過程也相對簡單。Service不僅可以實現(xiàn)后臺服務的功能,也可以用于進程間的通信。使用Service時,需要在manifest中進行聲明。對于進程內的Service調用如左圖所示,而對于進程間的Service調用則需要使用AIDL定義進程間的通信接口,如右圖所示。

2.3.2、Service1、Service功能用于長時間的后臺服務基于客戶-服務模式的綁定服務服務在主線程中運行,不創(chuàng)建新的線程2、Service實現(xiàn)繼承Service類,實現(xiàn)一個后臺服務子類覆蓋onCreate()方法,進行初始化覆蓋onBind()方法,實現(xiàn)進程間通信使用startService()方法啟動服務配置AndroidManifest.xml<serviceandroid:name="Service1“</service>見ServiceExample例子手機的音樂播放器:開啟后,同時進行其他操作,音樂也同時播放2.3.3、BroadcastReceiver當系統(tǒng)/應用程序運行時便會向Android注冊各種廣播,主要有兩種注冊類型:第一種是非常駐型廣播,此類廣播會伴隨應用程序的生命周期;第二種是常駐型廣播,此類廣播不隨應用程序是否關閉而存在,只要有廣播來就會被系統(tǒng)調用自動運行。2.3.3、BroadcastReceiver1、BroadcastReceiver功能作為觸發(fā)器,接收和響應全局事件2、實現(xiàn)BroadcastReceiver配置AndroidManifest.xml文件的<receiver>元素(靜態(tài)注冊),(注意:動態(tài)注冊使用Context.registerReceiver)配置AndroidManifest.xml文件<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/>繼承BroadcastReceiver類,實現(xiàn)廣播接收子類覆蓋onReceiver()方法,處理接收的Intent對象例子手機的來電鈴聲,短信,等app均含有BroadcastReceiver功能2.3.4、ContentProvider1、ContentProvider功能用于應用程序間存取數(shù)據(jù)數(shù)據(jù)存儲方式:文件,SQLite數(shù)據(jù)庫,內存Hash映射存儲的數(shù)據(jù)類型,包括:byte,short,int,long,float,double,char,boolean,及二進制文件2、ContentProvider存儲數(shù)據(jù)實現(xiàn)的方法insert()query()update()delete()3、客戶端通過ContentResolver方法訪問ContentProvider方法ContentResolver的方法需要Uri參數(shù),如insert(Uri,ContentValues)2.4、AndroidManifest.xml文件<manifest>

<uses-permission/>

<permission/>

<permission-tree/>

<permission-group/>

<instrumentation/>

<uses-sdk/>

<uses-configuration/>

<uses-feature/>

<supports-screens/>

<compatible-screens/>

<supports-gl-texture/>

<application>

<activity>

<intent-filter>

<action/>

<category/>

<data/>

</intent-filter>

<meta-data/>

</activity>

<activity-alias>

<intent-filter>...</intent-filter>

<meta-data/>

</activity-alias>

<service>

<intent-filter>...</intent-filter>

<meta-data/>

</service>

<receiver>

<intent-filter>...</intent-filter>

<meta-data/>

</receiver>

<provider>

<grant-uri-permission/>

<meta-data/>

</provider>

<uses-library/>

</application>

</manifest>1、<manifest>根元素<manifestxmlns:android="/apk/res/android"package="com.msi.manning.unlockingandroid">2、<application>元素<applicationandroid:icon="@drawable/icon“android:label=“@string/myapp>3、<activity>元素<activityandroid:name=".Activity1"android:label="@string/app_name"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>4、<receiver>元素5、<service>元素6、<uses-permission>元素<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/>7、@語法@+id/,創(chuàng)建新資源標識符如:@+id/intro_blurb_criteria@type/,引用引用已有資源如:@id/intro_blurb_criteria@string/location_entry_label@style/label2.2、URI、URL、URN2.2.1、URI(統(tǒng)一資源標示符)1、通用語法:[方案:]方案指定部分[#片段]2、不透明URI:方案的部分不是以斜線字符(‘/’)開始,不透明URI無法進行進一步解析例如:mailto:java-net@news:comp.lang.javaurn:isbn:096139210x3、層次URI[方案:][//權限][/路徑][?查詢][#片段]ftp://ftp.is.co.za/rfc/rfc1808.txtgopher:///00/Weather/California/Los%20Angeleshttp://www.math.uio.no/faq/compression-faq/part1.html2.2.2、URL(統(tǒng)一資源定位符)與層次URI相同2.2.3、URN(統(tǒng)一資源名稱)與不透明URI相同做個類比,URI就像是個人識別方式,URN可比作他的名字(或身份證),URL可比作他的住址。

/通過了解Android體系結構來熟悉各個組件所處的位置與作用,了解手機應用所需各功能的關系了解URI、URL、URN小節(jié)課后學習知識點Activity運作機制Intent及Intent-filter運作機制應用程序權限列表及含義手機系統(tǒng)開發(fā)與設計計算機學院/任建吉renjianji@第4章Activity以及Intent通信機制4.1Activity生命周期4.1.1Activity交互機制4.1.2Activity狀態(tài)4.1.3Activity生命周期的事件回調方法4.2Intent4.2.1Intent屬性4.2.2Intent解析4.2.3Activity的跳轉

本章導讀Activity是什么?Activity

是用戶唯一可以看得到的東西(也可以理解為就是一個界面)。幾乎所有的activity都與用戶進行交互,所以Activity主要負責的就是創(chuàng)建顯示窗口,你可以在這些窗口里使用setContentView(View)來顯示你自己的UI。多個Activity之間的關系

ActivityAActivityBstartActivity(Intent)4.1Activity生命周期

在Android應用程序中,所有的Android組件都有它自己的生命周期,表示從這一組件的創(chuàng)建到銷毀的整個過程。在這一過程中,組件會在活動、非活動以及可見或不可見等狀態(tài)中不斷因應用場景的改變而進行切換。這一小節(jié)中,我們將對Android系統(tǒng)中Activity組件的生命周期進行詳細的介紹Activity

生命周期重要數(shù)據(jù)都寫在onPause()里面,最后一個安全生命周期方法4.1.1Activity交互機制Android針對Activity的管理使用的是棧機制,Activity棧保存了已經(jīng)啟動并且沒有終止的Activity,并遵循“先進后出”的原則具體說明:在某個時刻只有一個Activity處在棧頂,當這個Activity被銷毀后,下面的Activity才可能處于棧頂,或者是有一個新的Activity被創(chuàng)建出來,則上一個Activity就被壓棧下去Android按照一種層次管理所有的Activity,因為Activity是直接涉及到與用戶交互界面的處理,而任意時刻與用戶交互的界面只有一個,所以Android針對Activity的管理采用了具有層次感的棧的數(shù)據(jù)結構4.1.2Activity狀態(tài)Active/running此時Activity一定處于屏幕的最前端,用戶完全可以看得到,并且可以與用戶進行交互。對于Activity棧來說,它處于棧頂PausedActivity在屏幕上仍然可見,但是它已經(jīng)失去了焦點,用戶不能與之進行交互。暫停狀態(tài)的Activity是存活的,它維持著其內部狀態(tài)和信息,但是系統(tǒng)可能會在手機內存極低的情況下殺掉該ActivityStopActivity在屏幕上完全不能被用戶看見,這個Activity已經(jīng)完全被其他Activity所遮住。系統(tǒng)仍然保留有其內部狀態(tài)和成員信息,但是它經(jīng)常會由于手機系統(tǒng)內存被征用而被系統(tǒng)殺死回收KilledActivity被系統(tǒng)殺死回收或者未啟動4.1.2Activity狀態(tài)四種狀態(tài)的轉換關系如圖4.1所示:圖4.1Activity的4種狀態(tài)之間的轉換圖Activity啟動后處于Active/Running

狀態(tài),此時Activity處于屏幕的最上面當用戶啟動了新的Activity,并且此Activity部分遮擋了當前的Activity或擁有透明屬性時,則當前的Activity轉換為Paused狀態(tài),也可以從Paused狀態(tài)到Active/Running狀態(tài)當用戶啟動的Activity完全遮住了當前的Activity時,則當前的Activity轉換為Stop狀態(tài)處于Stop狀態(tài)的Activity,當手機系統(tǒng)內存被其他應用程序征用時,Stop狀態(tài)的Activity將首先被殺死,進入Killed狀態(tài)。Active/Running狀態(tài)的Activity被用戶終止或是Paused狀態(tài)及Stop狀態(tài)的Activity被系統(tǒng)終止后,Activity進入了Killed狀態(tài)4.1.3Activity生命周期的事件回調方法

Activity生命周期分類?完整生命周期

–onCreate()onDestroy()?可視生命周期

–onStart()onStop()?前臺生命周期

–onResume()onPause()4.1.3Activity生命周期的事件回調方法

—Android生命周期分類全生命周期可視生命周期前臺生命周期全生命周期自第一次調用onCreate()開始,直至調用onDestroy()為止Activity在onCreate()中設置所有“全局”狀態(tài)以完成初始化在onDestroy()中釋放所有系統(tǒng)資源可視生命周期onStart()開始到onStop()結束在此期間,用戶可以在屏幕上看到該Activity在這兩個方法中,你可以管理該Activity的資源可以在onStart()中注冊一個BroadcastReceiver來監(jiān)控UI變化,而在onStop()中取消該注冊前臺生命周期自onResume()調用開始,至相應的onPause()調用為止在此期間,Activity位于前臺最上面,可與用戶進行交互當設備轉入休眠狀態(tài)或有新的Activity啟動時,將調用onPause()方法當Activity接收到新的Intent的時候會調用onResume()方法

4.1.3Activity生命周期的事件回調方法

—事件回調方法種類

Android生命周期的事件回調方法如下:voidonCreate(BundlesavedInstanceState)voidonStart()voidonRestart()voidonResume()voidonPause()voidonStop()voidonDestroy()注意:

(1)以上七個生命周期函數(shù),是Activity處于不同狀態(tài)時調用不同的函數(shù)。

(2)所有的Activiy都必須實現(xiàn)onCreate()方法,在該方法中可以對Activity進行一些初始化設置。

(3)所有的Activity生命周期方法的實現(xiàn)都必須先調用其父類的方法。4.1.3Activity生命周期的事件回調方法

—Activity生命周期過程及狀態(tài)改變

說明:(1)橢圓是Activity可以經(jīng)歷的主要狀態(tài)(2)矩形框代表了當Activity在狀態(tài)間發(fā)生改變的時候,我們進行操作所要實現(xiàn)的回調方法。方法

描述可被殺死下一個onCreate() 在Activity第一次被創(chuàng)建的時候調用??稍诖颂幾龀跏蓟O置──創(chuàng)建視圖、綁定數(shù)據(jù)至列表等。如果曾經(jīng)有狀態(tài)記錄,則調用此方法時會傳入一個表示Activity以前狀態(tài)的包對象做為參數(shù),繼以onStart()否onStart()onRestart()在Activity停止后,再次啟動前被調用,繼以onStart()否onStart()onStart() 當Activity正要變得為用戶所見時被調用

當Activity轉向前臺時繼以onResume(

溫馨提示

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

最新文檔

評論

0/150

提交評論