freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android平臺的飛機(jī)游戲設(shè)計(編輯修改稿)

2025-02-12 12:01 本頁面
 

【文章內(nèi)容簡介】 后單擊Apply按鈕。東華理工大學(xué)長江學(xué)院畢業(yè)設(shè)計圖32 將ADT指向Android SDK4. Android應(yīng)用程序結(jié)構(gòu)剖析 Android的APIAndroid API主要包含了以下幾個部分:5) ,它告訴系統(tǒng)如何處理所創(chuàng)建的所有應(yīng)用組件(尤其是活動(Activity),服務(wù)(Service),意圖接收器(Intent Receiver)和內(nèi)容提供者(Content Provider))。舉例來說,控制文件就是把活動和要接收的意圖(Intents)連接在一起的“膠水”。6) 活動活動就是一個有生命周期的對象。一個活動就是完成某些工作的代碼塊,這部分工作還可能包括對用戶UI界面的顯示。不過這不是必須的,有些活動從不顯示UI界面。7) 視圖視圖可以將其自身繪制到屏幕上。Android的用戶界面由一系列的視圖樹構(gòu)成。接口都是由一組以樹的形式出現(xiàn)的視圖組成的。開發(fā)者可以通過創(chuàng)建一個新的視圖的方法來使用自定義的圖形處理技術(shù)(比如開發(fā)游戲,或者是使用了不常用的用戶圖形窗口界面)。8) 意圖意圖是一個簡單的消息對象,它表示程序想做某事的“意圖”。比如應(yīng)用程序想要顯示一個網(wǎng)頁,那么它可以通過創(chuàng)建一個Intent實(shí)例并將其傳遞給系統(tǒng)來表示意圖瀏覽這個URI。系統(tǒng)將定位到能處理這一Intent的代碼(在當(dāng)前情況下就是瀏覽器),并運(yùn)行之。意圖也可以用于廣播系統(tǒng)范圍內(nèi)的有效事件(例如通知事件)。9) 服務(wù)服務(wù)是運(yùn)行在后臺的一段代碼。它可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序的進(jìn)程里,這取決于自身的需要.。其它的組件可以綁定到一個服務(wù)上來,通過遠(yuǎn)程過程調(diào)用(RPC)來調(diào)用這個方法。例如媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇的界面時,仍然希望音樂依然可以繼續(xù)播放,這時就可用服務(wù)來保證當(dāng)用戶界面關(guān)閉時音樂還繼續(xù)播放著。10) 通知通知將以小圖標(biāo)的形式呈現(xiàn)在狀態(tài)欄里,用戶通過與圖標(biāo)的交互來接收消息。最常見的通知包括短信息、通話記錄和語音郵件,但是應(yīng)用程序也可以創(chuàng)建它們自己的通知事件。11) 內(nèi)容提供者內(nèi)容提供者是用來提供對設(shè)備上數(shù)據(jù)進(jìn)行訪問。典型的例子就是使用內(nèi)容提供者來訪問聯(lián)系人列表。應(yīng)用程序也可以使用其它程序通過內(nèi)容提供者提供的數(shù)據(jù),同時也可以定義自己的內(nèi)容提供者來向其它應(yīng)用提供數(shù)據(jù)訪問服務(wù)。 Android應(yīng)用程序結(jié)構(gòu)解析通常由以下四個組件來構(gòu)建一個完整的Android應(yīng)用程序。①活動②意圖接收器③服務(wù)④內(nèi)容提供者然而,并不是所有的Android應(yīng)用程序都必須具備上面的四個組件,可以由上面的一個或幾個來組建。當(dāng)決定使用以上哪些組件來構(gòu)建Android應(yīng)用程序時,這是一個XML配置文件,在這個文件中可以聲明應(yīng)用程序組件以及它們的特性和要求。這個配置文件是每個Android應(yīng)用程序所必需的。 ActivitiesActivities 是一個程序的組件之一。它的主要功能是提供界面。一個程序一般由多個Activity組成,各activities之間關(guān)系很松散,它們之間沒有直接的關(guān)聯(lián)。必須有一個activity被指定為主activity,它是程序啟動時首先顯示的界面。每個activity都可以隨意啟動其它的activity。每當(dāng)一個activity被啟動,則前一個activity就被停止。一個程序中的所有啟動的activity都被放在一個棧中,所以被停止的activity并沒有銷毀,而在存于棧中。新啟動的activity先被存放于棧中,然后獲得輸入焦點(diǎn)。在當(dāng)前活動的activity上點(diǎn)返回鍵,它被從棧中取出,然后銷毀,然后上一個activity被恢復(fù)。當(dāng)一個activity因為新的activity啟動而被停止時,它會收到狀態(tài)變化的通知,這樣的變化有多個,每個都會引起系統(tǒng)調(diào)用一個相應(yīng)的回調(diào)方法以通知activity,這些回調(diào)方法被統(tǒng)稱為“生命周期回調(diào)方法”。這些回調(diào)方法分別在Activity被創(chuàng)建、停止、恢復(fù)、銷毀時被調(diào)用。如圖41,介紹各個“生命周期回調(diào)方法”,以及其各個方法之間的關(guān)系:onCreate :當(dāng)活動第一次啟動的時候,觸發(fā)該方法,可以在此時完成活動的初始化工作。onCreate 方法有一個參數(shù),該參數(shù)可以為空( null ),也可以是之前調(diào)用onSaveInstanceState ()方法保存的狀態(tài)信息。onStart :該方法的觸發(fā)表示所屬活動將被展現(xiàn)給用戶。onResume :當(dāng)一個活動和用戶發(fā)生交互的時候,觸發(fā)該方法。onPause :當(dāng)一個正在前臺運(yùn)行的活動因為其他的活動需要前臺運(yùn)行而轉(zhuǎn)入后臺運(yùn)行的時候,觸發(fā)該方法。這時候需要將活動的狀態(tài)持久化,比如正在編輯的數(shù)據(jù)庫記錄等。onStop :當(dāng)一個活動不再需要展示給用戶的時候,觸發(fā)該方法。如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動,而不會觸發(fā) onStop 方法。 所以保存狀態(tài)信息是應(yīng)該在onPause時做,而不是onStop時做?;顒尤绻麤]有在前臺運(yùn)行,都將被停止或者Linux管理進(jìn)程為了給新的活動預(yù)留足夠的存儲空間而隨時結(jié)束這些活動。因此對于開發(fā)者來說,在設(shè)計應(yīng)用程序的時候,必須時刻牢記這一原則。在一些情況下,onPause方法或許是活動觸發(fā)的最后的方法,因此開發(fā)者需要在這個時候保存需要保存的信息。onRestart :當(dāng)處于停止?fàn)顟B(tài)的活動需要再次展現(xiàn)給用戶的時候,觸發(fā)該方法。圖41 Android生命周期onDestroy :當(dāng)活動銷毀的時候,觸發(fā)該方法。和onStop 方法一樣,如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動而不會觸發(fā)該方法。 ServiceService是android系統(tǒng)中的一種組件,它跟Activity的級別差不多,但是他不能自己運(yùn)行,只能后臺運(yùn)行,并且可以和其他組件進(jìn)行交互。Service的啟動有兩種方式:() 和 ()。() 啟動Service經(jīng)歷:() onCreate() onStart()Service running() | onDestroy() Service stop如果Service還沒有運(yùn)行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運(yùn)行,則只調(diào)用onStart(),所以一個Service的onStart方法可能會重復(fù)調(diào)用多次。stopService的時候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會一直在后臺運(yùn)行。該Service的調(diào)用者再啟動起來后可以通過stopService關(guān)閉Service。所以調(diào)用startService的生命周期為:onCreate onStart(可多次調(diào)用) onDestroy()啟動Service會經(jīng)歷:()onCreate()onBind()Service runningonUnbind() onDestroy() Service stoponBind將返回給客戶端一個IBind接口實(shí)例,IBind允許客戶端回調(diào)服務(wù)的方法,比如得到Service運(yùn)行的狀態(tài)或其他操作。這個時候把調(diào)用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調(diào)用onUnbindonDestroy相應(yīng)退出。所以調(diào)用bindService的生命周期為:onCreate onBind(只一次,不可多次綁定) onUnbind onDestory。在Service每一次的開啟關(guān)閉過程中,只有onStart可被多次調(diào)用(通過多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個生命周期中只能被調(diào)用一次。service可以在和多場合的應(yīng)用中使用,比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在后臺繼續(xù)播放,比如檢測SD卡上文件的變化,再或者在后臺記錄你地理信息位置的改變等等。 Content ProviderContent Provider 屬于Android應(yīng)用程序的組件之一,作為應(yīng)用程序之間唯一的共享數(shù)據(jù)的途徑,Content Provider 主要的功能就是存儲并檢索數(shù)據(jù)以及向其他應(yīng)用程序提供訪問數(shù)據(jù)的借口。 Android 系統(tǒng)為一些常見的數(shù)據(jù)類型(如音樂、視頻、圖像、手機(jī)通信錄聯(lián)系人信息等)內(nèi)置了一系列的 Content Provider, 。持有特定的許可,可以在自己開發(fā)的應(yīng)用程序中訪問這些Content Provider。讓自己的數(shù)據(jù)和其他應(yīng)用程序共享有兩種方式:創(chuàng)建自己的Content Provier(即繼承自ContentProvider的子類) 或者是將自己的數(shù)據(jù)添加到已有的Content Provider中去,后者需要保證現(xiàn)有的Content Provider和自己的數(shù)據(jù)類型相同且具有該 Content Provider的寫入權(quán)限。對于Content Provider,最重要的就是數(shù)據(jù)模型(data model) 和 URI。 數(shù)據(jù)模型 Content Provider 將其存儲的數(shù)據(jù)以數(shù)據(jù)表的形式提供給訪問者,在數(shù)據(jù)表中每一行為一條記錄,每一列為具有特定類型和意義的數(shù)據(jù)。每一條數(shù)據(jù)記錄都包括一個 _ID 數(shù)值字段,改字段唯一標(biāo)識一條數(shù)據(jù)。 URI URI,每一個Content Provider 都對外提供一個能夠唯一標(biāo)識自己數(shù)據(jù)集(data set)的公開URI, 如果一個Content Provider管理多個數(shù)據(jù)集,其將會為每個數(shù)據(jù)集分配一個獨(dú)立的URI。所有的Content Provider 的URI 都以content:// 開頭,其中content:是用來標(biāo)識數(shù)據(jù)是由Content Provider管理的 schema。 在幾乎所有的Content Provider 的操作中都會用到URI,因此一般來講,如果是自己開發(fā)的Content Provider,最好將URI定義為常量,這樣在簡化開發(fā)的同時也提高了代碼的可維護(hù)性。首先來介紹如何訪問Content Provider中的數(shù)據(jù),訪問 Content Provider中的數(shù)據(jù)主要通過ContentResolver對象,ContentResolver類提供了成員方法可以用來對Content Provider 中的數(shù)據(jù)進(jìn)行查詢、插入、修改和刪除等操作。 以查詢?yōu)槔?,查詢一個 Content Provider 需要掌握如下的信息: 唯一標(biāo)識Content Provider 的URI,需要訪問的數(shù)據(jù)字段名稱,該數(shù)據(jù)字段的數(shù)據(jù)類型。 Broadcast ReceiverIntent廣播的“消費(fèi)者”。通過創(chuàng)建和注冊一個Broadcast Receiver,應(yīng)用程序可以監(jiān)聽符合特定條件的廣播的Intent。Broadcast Receiver 會自動的啟動你的Android應(yīng)用程序去響應(yīng)新來的Intent。Broadcast Receiver是事件驅(qū)動程序的理想手段。 Broadcase Receiver不執(zhí)行任何任務(wù),僅僅是接受并響應(yīng)廣播通知的一類組件。大部分廣播通知是由系統(tǒng)產(chǎn)生的,例如改變時區(qū),電池電量低,用戶選擇了一幅圖片或者用戶改變了語言首選項。應(yīng)用程序同樣也可以發(fā)送廣播通知,例如通知其他應(yīng)用程序某些數(shù)據(jù)已經(jīng)被下載到設(shè)備上可以使用。 一個應(yīng)用程序可以包含任意數(shù)量的Broadcase Reveiver來響應(yīng)它認(rèn)為很重要的通知。所有的Broadcast Receiver都擴(kuò)展自類BroadcastReceiver。 Broadcast Receiver不包含任何用戶界面。然而它們可以啟動一個Activity以響應(yīng)接受到的信息,或者通過NotificationManager通知用戶??梢酝ㄟ^多種方式使用戶知道有新的通知產(chǎn)生:閃動背景燈、震動設(shè)備、發(fā)出聲音等等。通常程序會在狀態(tài)欄上放置一個持久的圖標(biāo),用戶可以打開這個圖標(biāo)并讀取通知信息。在使用Broadcast Receiver前,先要注冊Broadcast Receiver,而注冊Broadcast Receiver有兩種方式,另一種是動態(tài)的在代碼中注冊,以下是兩種注冊Broadcast Receiver的實(shí)例:1)Xml代碼 receiver android:name=Receiver1 intentfilter ! 和Intent中的action對應(yīng) action android:name=/ /intentfilter /receiver receiver android:name=Receiver1 intentfilter ! 和Intent中的action對應(yīng) action android:name=/ /intentfilter/receiver2)在代碼中注冊Java代碼 IntentFilter filter = new IntentFilter()。 // 和廣播中Intent的action對應(yīng) MyBroadcastReceiver br = new MyBroadcastReceiver()。 registerReceiver(new MyBroadcastReceiver(), filter)。 Intent的詳細(xì)解析在一個Android應(yīng)用中,主要是由四種組件組成的,這四種組件可參考上一節(jié)的內(nèi)容。而這四種組件是獨(dú)立的,它們之間可以互相調(diào)用,協(xié)調(diào)工作,最終組成一個真正的Android應(yīng)用。在這些組件之間的通訊中,主要是由意圖協(xié)助完成的。意圖負(fù)責(zé)對應(yīng)用中一次操作的動作、動作對應(yīng)的數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此意圖的描述,負(fù)責(zé)找到相應(yīng)的組件,將意圖傳遞給它,并完成組件的調(diào)用。因
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1