<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    隨筆-230  評論-230  文章-8  trackbacks-0

    對于一個Android應(yīng)用程序來說,是由四種構(gòu)造塊組織而成的,這四種構(gòu)造塊如下:

        Activity

        Intent Receiver

        Service

        Content Provider


      但是,并不是每一個Android應(yīng)用程序都需要這四種構(gòu)造塊,這不是必須的,某些時候,我們只需要這四種中的幾種組合成我們的應(yīng)用。

        當(dāng)我們明確了我們的應(yīng)用需要哪些構(gòu)造塊后,我們就需要在AndroidManifest.xml中登記這些構(gòu)造塊的清單。這是一個XML配置文件,這個配置文件用于定義我們的應(yīng)用程序的組件、組件的功能及必要條件等。這個配置文件是每個Android應(yīng)用必需的。對于AndroidMainfest.xml的Schema,參考SDK包附帶的文檔。以下,我們對四種構(gòu)造塊做一些說明:

    一、Activity

        Activity是Android構(gòu)造塊中最基本的一種,在應(yīng)用中,一個activity通常就是一個單獨的屏幕。每一個activity都被實現(xiàn)為一個獨立的類,并且繼承于Activity這個基類。這個activity類將會顯示由幾個Views控件組成的用戶接口,并對事件做出響應(yīng)。大部份的應(yīng)用都會包含多個的屏幕。例如,一個短消息應(yīng)用程序?qū)幸粋€屏幕用于顯示聯(lián)系人列表,第二個屏幕用于寫短消息,同時還會有用于瀏覽舊短消息及進行系統(tǒng)設(shè)置的屏幕。每一個這樣的屏幕,就是一個activity。從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。在一些應(yīng)用中,一個屏幕甚至?xí)祷刂到o前一個屏幕。

        當(dāng)一個新的屏幕打開后,前一個屏幕將會暫停,并保存在歷史堆棧中。用戶可以返回到歷史堆棧中的前一個屏幕。當(dāng)屏幕不再使用時,還可以從歷史堆棧中刪除。默認情況下,Android將會保留從主屏幕到每一個應(yīng)用的運行屏幕。

        Android使用了Intent這個特殊類,實現(xiàn)在屏幕與屏幕之間移動。Intent類用于描述一個應(yīng)用將會做什么事。在Intent的描述結(jié)構(gòu)中,有兩個最重要的部分:動作和動作對應(yīng)的數(shù)據(jù)。典型的動作類型有:MAIN(activity的門戶)、VIEW、PICK、EDIT等。而動作對應(yīng)的數(shù)據(jù)則以URI的形式進行表示。例如:要查看一個人的聯(lián)系方式,你需要創(chuàng)建一個動作類型為VIEW的intent,以及一個表示這個人的URI。

        與之有關(guān)系的一個類叫IntentFilter。相對于intent是一個有效的做某事的請求,一個intent filter則用于描述一個activity(或者Intent Receiver)能夠操作哪些intent。一個activity如果要顯示一個人的聯(lián)系方式時,需要聲明一個IntentFilter,這個IntentFilter要知道怎么去處理VIEW動作和表示一個人的URI。IntentFilter需要在AndroidManifest.xml中定義。

       通過解析各種intent,從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。當(dāng)向前導(dǎo)航時,activity將會調(diào)用startActivity(Intent myIntent)方法。然后,系統(tǒng)會在所有安裝的應(yīng)用程序中定義的IntentFilter中查找,找到最匹配myIntent的Intent對應(yīng)的activity。新的activity接收到myIntent的通知后,開始運行。當(dāng)startActivity方法被調(diào)用將觸發(fā)解析myIntent的動作,這個機制提供了兩個關(guān)鍵好處:

        A、Activities能夠重復(fù)利用從其它組件中以Intent的形式產(chǎn)生的一個請求;

        B、Activities可以在任何時候被一個具有相同IntentFilter的新的Activity取代。

    二、Intent Receiver

        當(dāng)你希望你的應(yīng)用能夠?qū)σ粋€外部的事件(如當(dāng)電話呼入時,或者數(shù)據(jù)網(wǎng)絡(luò)可用時,或者到了晚上時)做出響應(yīng),你可以使用一個Intent Receiver。雖然Intent Receiver在感興趣的事件發(fā)生時,會使用NotificationManager通知用戶,但它并不能生成一個UI。Intent Receiver在AndroidManifest.xml中注冊,但也可以在代碼中使用Context.registerReceiver()進行注冊。當(dāng)一個intent receiver被觸發(fā)時,你的應(yīng)用不必對請求調(diào)用intent receiver,系統(tǒng)會在需要的時候啟動你的應(yīng)用。各種應(yīng)用還可以通過使用Context.broadcastIntent()將它們自己的intent receiver廣播給其它應(yīng)用程序。

    三、Service

        一個Service是一段長生命周期的,沒有用戶界面的程序。比較好的一個例子就是一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應(yīng)用中,應(yīng)該會有多個activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂重放這個功能并沒有對應(yīng)的activity,因為使用者當(dāng)然會認為在導(dǎo)航到其它屏幕時音樂應(yīng)該還在播放的。在這個例子中,媒體播放器這個activity會使用Context.startService()來啟動一個service,從而可以在后臺保持音樂的播放。同時,系統(tǒng)也將保持這個service一直執(zhí)行,直到這個service運行結(jié)束。另外,我們還可以通過使用Context.bindService()方法,連接到一個service上(如果這個service還沒有運行將啟動它)。當(dāng)連接到一個service之后,我們還可以service提供的接口與它進行通訊。拿媒體播放器這個例子來說,我們還可以進行暫停、重播等操作。

    四、Content Provider

        應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件中、SQL數(shù)據(jù)庫中,甚至是任何有效的設(shè)備中。當(dāng)你想將你的應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時,Content Provider將會很有用。一個Content Provider類實現(xiàn)了一組標(biāo)準(zhǔn)的方法,從而能夠讓其它的應(yīng)用保存或讀取此Content Provider處理的各種數(shù)據(jù)類型。

        更詳細的Content Provider資料,可以參考附帶文檔中的Accessing Content Providers。

    五、Intent類
        Intent負責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android則根據(jù)此Intent的描述,負責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào) 用者之間的解耦。

    posted on 2009-04-13 00:04 有貓相伴的日子 閱讀(3308) 評論(2)  編輯  收藏 所屬分類: Android

    評論:
    # re: Android應(yīng)用程序四大組件 2010-07-21 16:10 | asdf
    # re: Android應(yīng)用程序四大組件 2014-01-09 09:29 | 海天鷹
    四大組件怎么有五點?  回復(fù)  更多評論
      
    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    主站蜘蛛池模板: 亚洲乱色熟女一区二区三区丝袜| 一本久久免费视频| 亚洲乱码中文字幕久久孕妇黑人| 大地资源免费更新在线播放| 一个人免费视频在线观看www| 视频一区在线免费观看| 亚洲成年网站在线观看| 亚洲视频精品在线观看| 亚洲av无码潮喷在线观看| 久久亚洲中文字幕精品一区四| 国产福利免费在线观看| 曰曰鲁夜夜免费播放视频 | 毛片a级毛片免费播放100| 亚洲免费视频在线观看| GOGOGO免费观看国语| 暖暖免费中文在线日本| 国产成人综合亚洲绿色| 亚洲老熟女五十路老熟女bbw| 亚洲综合综合在线| 亚洲精品免费视频| 亚洲av网址在线观看| 亚洲成AV人在线观看天堂无码| 在线播放亚洲第一字幕| 伊人久久亚洲综合| 亚洲午夜无码久久久久| 在线精品亚洲一区二区小说| 久久久久亚洲精品无码网址| 久久亚洲中文字幕精品一区| 精品亚洲一区二区三区在线观看| 亚洲日韩人妻第一页| 在线观看午夜亚洲一区| 久久91亚洲人成电影网站| 久久精品国产亚洲沈樵| 亚洲AV无码一区二区二三区入口 | 亚洲日韩久久综合中文字幕| 中日韩亚洲人成无码网站| 亚洲欧美日韩国产成人| 精品亚洲av无码一区二区柚蜜| 国产精品久久久久久亚洲小说| 日韩电影免费在线观看网址 | 四虎影库久免费视频|