編輯:開發入門
開始之前
本教程介紹如何在 Eclipse 環境中進行 android 應用程序開發,包括兩個示例應用程序。第一個示例是一個基本的應用程序,涉及構建和調試的所有階段。第二個應用程序示例涉及比較復雜的 Android 特性,包括聯系人搜索和 Google Maps 地址查找。要想從本教程獲得最大收益,具備移動開發經驗會有幫助,但不是必需的。開發 android 應用程序需要 Java™ 編程技能,但是對於本教程不是必需的。
關於本教程
我們為什麼要關注 Android?有兩個原因使 Android 成為重要的平台。首先,Google 引入了 Android,它在很短時間內就獲得了市場的關注。Google 正在進軍移動市場。它在這個市場上采取的第一個行動就是發布 Android 和 Open Handset Alliance,這是一個令人印象深刻的起點。第二,Android 不僅僅是另一種包含電話、菜單和觸摸屏功能的移動平台。您將在本教程中了解到,android 提供了一種不同的應用程序開發方法。由於可以對請求的操作和代碼進行運行時綁定,Android 的體系結構支持高度可定制的軟件環境。無論是考慮市場因素還是 android 的技術方面,它都是一個值得研究的平台。
本教程分為以下幾節:
系統需求
本教程需要結合使用幾種技術。
IntentReceiver
— 演示 IntentReceiver
的實現,這個類處理 androidManifest.XML 文件中 IntentFilter
標記所公布的 intent。android 簡介
在討論 Eclipse 插件和開發 Android 應用程序之前,我們先看看 Android 的體系結構和一些重要的術語,這會對本教程後面的討論和您自己構建 android 應用程序有幫助。
android 術語
在 Eclipse 環境中開發 Android 應用程序需要了解 Eclipse 環境和 Android 平台的知識。了解以下術語會有助於用 Eclipse 插件開發 android 應用程序。
android 基礎知識和必需的工具
android 是一種針對移動平台的開放源碼操作系統。到編寫本教程時,它是一種純軟件的平台,沒有可用的硬件設備。
android 平台被稱為一個產品組合,因為它是一系列組件的集合,包括:
簡要介紹了 android 平台的體系結構之後,我們來從市場的角度看看這個平台的一些重要特性。
android 為什麼很重要?
自從 Android 和最初的 SDK 發布以來,計算機技術新聞界一直非常關注 Android。android 之所以重要主要有兩個原因。
Android 是 Google 進軍移動市場的主要行動。移動應用程序領域競爭激烈,新的競爭者很難涉足。Google 擁有大量資源和強大的品牌實力,有能力涉足任何市場。Google 進軍移動市場已經好幾年了。Android 原來屬於另一家公司,Google 通過收購這家公司大大提高了在移動市場上的競爭力。Google 的任何行動都會受到關注,而且引入新平台也很引人注目。android 同時具備這兩個因素。
第二個原因是 Android 的應用程序模型與眾不同。Android 應用程序並不是需要大量單擊操作的純粹的菜單式應用程序。Android 應用程序中確實有菜單和按鈕,但是 android 在體系結構中引入了一種新穎的設計元素 intent。
intent
intent 是一種構造,應用程序可以通過它發出請求,這就像是發出求助信號。intent 可能像下面這樣:
"Wanted: An application to help me look up a contact" 或 "Wanted: An application to help me display this image" 或 "Wanted: An application to perform this geographic-based search"
應用程序可以按照相似或互補的方式進行注冊,表明它們有能力或有興趣執行各種請求或 intent。比如:
"Available: Application ready and willing to present contact records in clear, concise manner" 或 "Available: Application ready and willing to perform a geographic search"
這些是 IntentFilter
的示例,下面將要討論。
IntentFilter
應用程序通過一個稱為 IntentFilter
的構造聲明它們能夠執行某些類型的操作。IntentFilter
可以在運行時進行注冊,也可以在 androidManifest.XML 文件中設置。下面的代碼片段取自一個對 SMS(文本)消息進行響應的 android 應用程序:
清單 1. 對 SMS 進行響應的 android 應用程序
<receiver class=".MySMSMailBox" > <intent-filter> <action android:value="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
簡要介紹 intent 和 IntentFilter
之後,下一節介紹 android 應用程序的四種主要類型。
android 應用程序 — 概述
我們來看看 android 應用程序的四種主要類型:活動、服務、接收器和 ContentProvider
。我們還要看看顯示用戶界面(UI)元素的視圖。
活動
活動是最常用的 android 應用程序形式。活動在一個稱為視圖 的類的幫助下,為應用程序提供 UI。視圖類實現各種 UI 元素,比如文本框、標簽、按鈕和計算平台上常見的其他 UI 元素。
一個應用程序可以包含一個或多個活動。這些活動通常與應用程序中的屏幕形成一對一關系。
應用程序通過調用 startActivity()
或 startSubActivity()
方法從一個活動轉移到另一個活動。如果應用程序只需 “切換” 到新的活動,就應該使用前一個方法。如果需要異步的調用/響應模式,就使用後一個方法。在這兩種情況下,都需要通過方法的參數傳遞一個 intent。
由操作系統負責決定哪個活動最適合滿足指定的 intent。
服務和接收器
與其他多任務計算環境一樣,“在後台” 運行著一些應用程序,它們執行各種任務。Android 把這種應用程序稱為 “服務”。服務是沒有 UI 的 android 應用程序。
接收器是一個應用程序組件,它接收請求並處理 intent。與服務一樣,接收器在一般情況下也沒有 UI 元素。接收器通常在 androidManifest.XML 文件中注冊。清單 2 是接收器代碼的示例。注意,接收器的類屬性是負責實現這個接收器的 Java 類。
清單 2. 接收器代碼
package com.msi.samplereceiver; import android.content.Context; import android.content.Intent; import android.content.IntentReceiver; public class myreceiver extends IntentReceiver { public void onReceiveIntent(Context arg0, Intent arg1) { // do something when this method is invoked. } }
用 ContentProvider
進行數據管理
ContentProvider
是 android 的數據存儲抽象機制。我們以移動設備上常見的一種數據為例:地址簿或聯系人數據庫。地址簿包含所有聯系人及其電話號碼,用戶在使用手機時可能需要使用這些數據。ContentProvider
對數據存儲的訪問方法進行抽象。ContentProvider
在許多方面起到數據庫服務器的作用。對數據存儲中數據的讀寫操作應該通過適當的 ContentProvider
傳遞,而不是直接訪問文件或數據庫。可能還有 ContentProvider
的 “客戶機” 和 “實現”。
下一節介紹 Android 視圖,這是 android 在移動設備屏幕上顯示 UI 元素的機制。
視圖
android 活動通過視圖顯示 UI 元素。視圖采用以下布局設計之一:
選擇一種布局(或布局的組合)之後,就可以用各個視圖顯示 UI。
視圖元素由大家熟悉的 UI 元素組成,包括:
視圖是在一個 XML 文件中定義的。清單 3 給出一個簡單的LinearVertical
布局示例。
清單 3. 簡單的 LinearVertical
布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout XMLns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Activity 1!" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Activity 1, second text vIEw!" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Switch To Activity 2" id="@+id/switchto2" /> </LinearLayout>
注意,每個元素有一個或多個屬於 android 名稱空間的屬性。
下一節討論如何獲取 android SDK 並在 Eclipse 環境中配置它。
效果圖: Java代碼:import android.app.AlertDialog; import android.content.Context; import a
簡介: IBM® Lotus® iNotes™ 8.5 包含了許多新特性。本系列的第三篇文章介紹了新的 Lotus iNotes
很多人會問,android平台可以不使用Java開發應用程序??我做Android平台native開發之前,也有這麼想過,但是我又想,底層系統全是c/c++代碼,用c/
看一個圖先: 這是官網的Activity生命周期結構圖,從這個圖中可以看出Activity的生命周期函數挺多的,其實他的生命周期和以往我們看到的其他組件的生命周期一樣,