成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android系統應用程序基本概念解讀

移動開發 Android
Android系統應用程序中包含有四種構造塊,分別為Activity;Intent Receiver;Service以及Content Provider等。

經常關注我們51CTO的朋友們應該知道,在以前的文章中我們對Android這一手機系統有一個詳細的跟蹤介紹,方便大家學習應用這一新的功能強大的開源手機系統,比如對Android源碼的編譯的解析的解析等等。那么今天我們將會更進一步的對Android系統應用程序的基本架構進行一個詳細了解。#t#

理解了這些概念對于開發者來說能更有效的開發Android系統應用程序.

對于一個Android應用程序來說,是由四種構造塊組織而成的,這四種構造塊如下:

Activity

Intent Receiver

Service

Content Provider

但是,并不是每一個Android系統應用程序都需要這四種構造塊,這不是必須的,某些時候,我們只需要這四種中的幾種組合成我們的應用。

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

1、Activity

Activity是Android系統應用程序中構造塊中最基本的一種,在應用中,一個 activity通常就是一個單獨的屏幕。每一個activity都被實現為一個獨立的類,并且繼承于Activity這個基類。這個activity類將會顯示由幾個Views控件組成的用戶接口,并對事件做出響應。大部份的應用都會包含多個的屏幕。例如,一個短消息應用程序將會有一個屏幕用于顯示聯系人列表,第二個屏幕用于寫短消息,同時還會有用于瀏覽舊短消息及進行系統設置的屏幕。每一個這樣的屏幕,就是一個activity。從一個屏幕導航到另一個屏幕是很簡單的。在一些應用中,一個屏幕甚至會返回值給前一個屏幕。

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

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

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

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

A、Activities能夠重復利用從其它組件中以Intent的形式產生的一個請求;

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

2、Intent Receiver

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

3、Service

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

4、Content Provider

Android系統應用程序能夠將它們的數據保存到文件中、SQL數據庫中,甚至是任何有效的設備中。當你想將你的應用數據與其它的應用共享時,Content Provider將會很有用。一個Content Provider類實現了一組標準的方法,從而能夠讓其它的應用保存或讀取此Content Provider處理的各種數據類型。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-03-01 16:25:07

WCF體系架構

2010-03-01 16:41:04

WCF數據表

2009-12-22 10:16:54

WCF服務狀態

2010-01-25 14:13:36

Android菜單系統

2010-02-04 09:41:03

Android應用程序

2013-12-26 15:34:19

Android開發Android應用基本概念

2011-03-28 11:05:17

ODBC

2010-07-02 11:48:30

RS-232C協議

2013-04-16 11:08:44

Android基本概念

2013-04-16 10:45:52

Android基本概念

2010-03-02 16:22:31

WCF狀態應用

2009-11-25 14:56:43

2010-04-22 12:27:16

Aix操作系統

2014-04-16 15:11:19

Spark

2012-09-11 14:39:03

Moosefs

2009-03-20 11:46:10

MGCP協議網關

2021-11-02 08:41:44

Kubernetes Nginx部開源

2015-10-21 13:57:09

WatchKit 要點開發

2010-01-04 10:41:14

Silverlight

2023-11-15 13:12:16

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精久| 欧美中文在线 | 看毛片的网站 | 亚洲视频在线播放 | 在线观看亚洲精品视频 | 国产美女在线看 | 国产免国产免费 | 人人精品| 国产一区二区精品在线观看 | 日韩有码一区二区三区 | 久久国产精品-久久精品 | 久久久久久久91 | 久久国内 | 国产情侣久久 | 亚洲欧美综合 | 欧美久久影院 | 日本中文字幕日韩精品免费 | 久久亚洲精品国产精品紫薇 | 精品国产久 | 成人精品在线观看 | 亚洲视频三区 | 99久久精品免费看国产四区 | 欧美不卡视频一区发布 | 久在线 | 99在线免费观看视频 | 亚洲一区二区久久 | 日韩在线视频观看 | 中文字幕男人的天堂 | 波多野结衣中文视频 | 日本人爽p大片免费看 | 亚洲视屏 | 欧美精品一区二区三区在线播放 | 成人午夜电影在线观看 | 国产成人免费视频网站视频社区 | 成人国产精品色哟哟 | 国产精品一区二区久久久久 | 亚洲网站在线观看 | 久久99精品久久久 | av免费观看网站 | chinese中国真实乱对白 | 国产精品毛片一区二区三区 |