Google Android 應用程式結構

來源:互聯網
上載者:User
原文出處:http://www.robotercoding.com/blog/?p=33

對http://code.google.com/android/intro/anatomy.html進行了翻譯

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

在應用中一旦決定使用了哪些組件,就需要在AndroidManifest.xml檔案中列舉出來。可以參考Android manifest file documentation

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所處理的資料。更多的內容可以參考Accessing Content Providers.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.