Andorid 應用程式以鬆散耦合的方式連結兩個元件,而連結的方式是透過專案的mainfest來描述。
建立 Android 應用程式的元件:
- Activities:
屬於應用程式的展現層。只要你的程式是有畫面要呈現在螢幕上的,就要繼承Activity class,Activity使用Views來組成使用者介面,Views可以用來顯示資訊,並對使用者的動作做出反應。如果用桌面應用程式(例如VB)的概念來說,Activity就相當於Form(表單,也就是視窗)。 - Services:
屬於不可見(沒有畫面呈現在螢幕上)的應用程式。它會在暗地裡更新應用程式的資料來源及Activity,也可以觸發Notifications(通知)。它常被用來執行例常性的程序。 - Content Providers:
分享式的資料儲存機制。它可以管理和分享應用程式的database(資料庫),也可以讓兩個應用程式的資料互相分享,意思是說,一個應用程式可以透過設定Content Provider來允許接受其他應用程式送來的資料,也可以讓自己本身的資料分享給其他應用程式使用。 - Intents:
簡單的訊息傳送框架。你可以透過Intent對全系統做訊息廣播,或僅僅針對某一個Activity或Service傳送訊息,系統會自行決定做出適合的動作。 - Broadcast Receivers:
Intent廣播的接收者。你可以建立並註冊一個Broadcast Receiver,來讓你的應用程式偵聽廣播中符合要求的Intent。 - Notifications:
使用者通知框架。Notification可以讓你發送訊號給使用者,而不用轉移應用程式的焦點(focus),或中斷目前的Activities,它可以讓一個Service或Broadcast Receiver引起使用者的注意。例如:當你的手機收到一封簡訊或一通電話,可以讓手機閃爍燈光、響鈴、顯示小圖示或發出一個訊息等等方式來告知使用者。你可以在你的應用程式中使用Nofification來觸發這些事件。
manifest 檔
每個 Android Project 都有一個 AndroidManifest.xml 檔,用來定義資料結構、應用程式的中繼資料(像是icon或theme)和元件(Activity, Service ...)。AndroidManifest.xml
檔案中的 root 標籤是<manifest>,看起來如下:<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blogspot.tonycube.android"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloAndroid"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
說明
- <application>標籤:
一個manifest只能包含一個application節點,它使用屬性(attribute)來設定應用程式的中繼資料(包含應用程式的title、icon和theme),它也可以被當成其他元件的容器,可以使用Activity, Service, Content Provider, and Broadcast Receiver標籤來指定應用程式使用的元件。 - <activity>標籤:
做為Activity在螢幕上顯示的設定,用 android:name 屬性可以用來指定對應的Activity class。另外,它必須包含主要啟動的Activity,否則會出現 runtime exception。每個Activity標籤可以包含許多的 <intent-filter> 子標籤。 - <service>標籤:
和<activity>標籤一樣,一個<service>對應到一個Service class,一樣也有<intent-filter> 子標籤。<service android:enabled="true" android:name=".MyService"></service>
- <provider>標籤:
對應到Content Provider class,用來管理資料庫的存取和兩個應用程式間的資料交換。<provider android:permission="com.paad.MY_PERMISSION" android:name=".MyContentProvider" android:enabled="true" android:authorities="com.paad.myapp.MyContentProvider"> </provider>
- <receiver>標籤:
使用receiver標籤,你可以不需要啟動應用程式,就可以先註冊一個Broadcast Receiver。它像是全域的事件偵聽器,只要註冊一次,就可以執行應用程式中任何地方發出的,符合我們要偵聽的意圖(Intent)。當你在manifest中註冊Broadcast Receiver後,它就可以完全自動地執行。<receiver android:enabled="true" android:label="My Broadcast Receiver" android:name=".MyBroadcastReceiver"> </receiver>
- <uses-permission>標籤:
應用程式的執行許可。<uses-permission android:name="android.permission.ACCESS_LOCATION"> </uses-permission>
- <permission>標籤:
你必須在manifest中定義一個permission,來讓你限制元件的存取。元件可以透過其屬性 android:permission 來指定要使用哪一個限制條件。<permission android:name="com.paad.DETONATE_DEVICE" android:protectionLevel="dangerous"android:label="Self Destruct" android:description="@string/detonate_description"> </permission>
- <instrumentation>標籤:
Instrumentation class提供一個測試框架,讓你可以對Activity 和 Service個測試。它提供一個掛鈎來監示應用程式以及它和系統資源間的互動。為每個test class建立一個節點。<instrumentation android:label="My Test" android:name=".MyTestClass" android:targetPackage="com.paad.aPackage"> </instrumentation>
我要留言
留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。