胖熊熊

          得到多少又失去了什么

          Android學習 (二) 應用程序結構

             注:以下內容轉自網絡

          在一個Android 應用中有如下的四種組件:
          * Activity 活動組件
          * Intent Receiver 接受處理組件
          * Service 服務組件
          * Content Provider 內容提供組件
          一個Android 應用并不需要同時具有這四個組件,應用可以組合這些組件。

          在應用中一旦決定使用了哪些組件,就需要在AndroidManifest.xml文件中列舉出來。

          Activity
          Activities是最普遍的組件,在應用中通常用于顯示一個屏幕(頁面)的內容,僅僅一個屏幕(頁面)的內容。開發人員需要從Activity基 類繼承下來,管理UI顯示和UI的反饋事件。大多數應用程序都會有多個屏幕(頁面)的內容,如一個文本消息的應用程序,第一個頁面要顯示聯系人列表,第二 個頁面要寫東西給選定的聯系人,其他頁面顯示舊的文本內容或者其他等等。每一個頁面都被當做一個Activity(活動組件),移動到其他頁面意味著開始 了一個新的Activity(活動組件)。在某些場景下,一個Activity可以返回值給前一個Activity,如一個頁面選擇了一張圖片,可以返回 這張圖片給調用者(Activit)。

          打開新的頁面時,前一個頁面將會暫停,放置到一個歷史堆棧中,用戶可以使用后退鍵瀏覽前面的頁面,頁面也可以從堆棧中刪除。Android會為每一個從主頁面home screen(idle界面?)啟動的應用維護一個歷史堆棧列表。

          Intent and Intent Filters
          Android使用一個叫Intent的類從一個頁面移動到另外一個頁面。一個Intent描述了應用將要做的事情,就是一種動作行為。最重要的有兩點: 動作的類型和動作所捎帶的參數(數據),典型的動作類型為MAIN(activity的正門),VIEW, PICK, EDIT等等。參數數據以URI形式來表示。例如,為了查看一個人的聯系信息,需要創建一個Intent,動作類型為VIEW,人名為參數數據(需要格式 化為URI)。

          一個Activity為了表明能夠處理某些Intent,Android設計了一個相關的類IntentFilter,Activity在 IntentFilter中決定它能夠處理的Intent動作類型,IntentFilter需要在AndroidManifest.xml文件中進行聲 明。

          從一個頁面到另外一個頁面跳轉的依據在于發出的Intent,為了向前瀏覽,Activity調用startActivity(myIntent). Android系統在所有安裝的應用程序中查找intent filters,找出最能夠匹配myIntent的Activity。新的activity將被啟動,intent被傳入。有如下兩個關鍵點:
          * Activities 能夠重新被使用
          * Activities 在任何時候都可以被替換,只要一個Activity設置了相同的IntentFilter

          Intent Receiver
          在應用程序中,針對外部事件需要執行一些動作來反饋,可以使用IntentReceiver類。例如:來了一個電話,或者數據通道可用,或者晚上到了。 Intent Receiver沒有UI的顯示,盡管可以通過NotificationManager 通知用戶某些有趣的事情發生了。Intent Receivers也需要在AndroidManifest.xml中進行聲明,當然也可以在程序中調用 Context.registerReceiver()接口動態聲明。同時在應用程序沒有跑起來的時候也能夠調用Intent Receivers,當一個Intent Receivers被觸發時,Android系統將會啟動這個應用程序。應用程序也能夠通過Context.broadcastIntent()廣播他們 的Intent。

          Service
          一個Service是沒有UI,一直運行在后臺的代碼組件。一個好的例子:播放器從一個播放列表中播放歌曲。在一個播放器應用中,大概會有一個或多個 Activity組件允許用戶選擇歌曲和播放它們,歌曲播放代碼不應該放在Activity組件中,因為我們希望一直能夠聽歌,甚至切換到了其他頁面。所 以,播放器頁面應該啟動一個服務組件(Context.startService())來播放歌曲。Android系統將會保持service運行直到它 結束(可以參考“Android 應用的生命周期”一文)。可以使用Context.bindService()接口連接上一個服務(如果這時候服務沒有啟動,連接會導致服務啟動),連接 上之后,就可以和服務進行通訊。像播放器的例子,可以允許暫停,重繞等等。

          Content Provider
          應用程序可以在文件中,數據庫或者其他設備存儲他們的數據。Content Provider用于將各個應用程序的數據進行共享,Content Provider是一個類,執行一套標準的方法,讓其他的應用程序存儲和獲取Content Provider所處理的數據

          轉載自:http://blog.csdn.net/lixinye0123/archive/2008/04/16/2296916.aspx

          posted on 2011-04-02 15:58 fatbear 閱讀(432) 評論(0)  編輯  收藏 所屬分類: Android


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 博客| 吴忠市| 黎城县| 娄底市| 通渭县| 德令哈市| 西青区| 柳江县| 且末县| 奉化市| 福泉市| 鹤岗市| 宁津县| 永寿县| 高邑县| 通辽市| 朝阳县| 东宁县| 桐庐县| 阜城县| 门源| 隆昌县| 大关县| 万载县| 湖州市| 台南县| 汉阴县| 德阳市| 平原县| 罗城| 晋宁县| 海林市| 岳普湖县| 芦溪县| 杂多县| 蚌埠市| 崇义县| 邵东县| 广平县| 龙胜| 滦平县|