顯示具有 Services 標籤的文章。 顯示所有文章
顯示具有 Services 標籤的文章。 顯示所有文章

2011年6月13日 星期一

Android 開發前須知 - Activity, Intent, Content Provider, Service 簡介


Android 應用程式由四個主要模組所組成,此四個模組分別為 Activity、Intent、Content Provider、Service,雖然一個 Android 應用程式都由這四個模組構成,但並不代表著每個應用程式必須包含每個模組,像是簡單的印出 HelloWorld 字串的應用,只需要包含一個 Activity 即可達成。

Activity

Activity 是應用裡面最基本的模組,每一個 Activity 代表著一個螢幕,每一個螢幕所負責的就是處理應用程式所需的工作或是跳轉至其他 Activity 等功能,例如我們需要一個應用為取得課程資訊,這時可以設計成,第一個 Activity 顯示著所有學院的列表頁,第二個 Activity 顯示資訊系所所有課程列表,第三個 Activity 顯示計算機概論課程資訊,也因為如此的設計讓應用的功能上可以容易的轉換。


package nchu.test.HelloWorld;

import android.app.Activity;
import android.os.Bundle;

public class HelloWorld extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);
}
}

所有的 Activity 都繼承於 android.app.Activity 類別,並且會馬上呼叫 onCreate() 函式,不過並不是呼叫 onCreate() 之後 Activity 就能馬上運行,實際上 Activity 要能開始運行需要經過三個過程為"建立 -> 開始 -> 重繪",三個過程相對應的函式如下。onResume()為重繪整個螢幕。

開始 -> onCreate() -> onStart() -> onResume() -> Activity 運行


Intent

當創建了許多 Activity 之後,該如何讓這些 Activity 切換,我們可以利用 Intent 這個類別。

Intent 類別主要是描述應用的功能,描述的結構為動作和動作相對應的資料,利用 IntentFilter 裡的描述可以透過比對找到應用程式需要呼叫的 Activity 是哪一個。

我們看一下 AndroidManfest.xml 檔案裡 IntentFilter 描述:

在 action android:name 這行描述的是 Activity 的動作,動作名稱為 android.intent.action.MAIN。

在category android:name 這行描述的是使用哪個種類的元件來掌控 Intent,這裡使用的是category.LAUNCHER,主要可以將 Activity 放置到 top-level application launcher 去執行。


<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Activity 的跳轉會經過以下幾個步驟:
首先暫停 Activity01,然後 Activity02 進入 Activity 的生命週期,之後先停止 Activity01 然後才將其摧毀。

Activity01 onPause() -> Activity02 onCreate() ->
Activity02 onStart() -> Activity02 onResume() ->
Activity01 onStop() -> Activity01 onDestroy()


Content Provider

一般來說,在 Android 應用程式裡是無法取得不同應用程式的資料,不過當我們使用 Android 設備時可以儲存通訊人連絡電話,不同的應用程式開啟都可以共同的存取這些通訊錄的資料,而這個資料共有的功能就是由 Content Provider 所提供。

Content Provider 是一個特殊的資料儲存類型,並且提供了一些標準的介面方便資料的存取,像是 query()、insert() 或是 update() 等,當我們在應用程式中有需要使用到 Content Provider 時,則必須在 AndroidManifest.xml 檔案中宣告。


Service

當我們開啟一個撥放歌曲的應用程式聽著歌,接著想要上網找尋資料,勢必會遇到一個狀況,必須跳離播歌的程式才能上網,當我們跳離開程式後又希望歌曲可以在背景中繼續撥放著,那這個部份就是由 Service 所提供。

Service 像是在背景提供著服務,不像 Activity 有著介面可以讓使用者操作,通常 Service 的生命周期都是比較長,屬於在背景長駐執行一些不中斷的程式。


相關連結:
Android Developer : Activity
Android Developer : Intents and Intent Filters
Android Developer : Content Provider
Android Developer : Services

2011年6月3日 星期五

CAMPUS APP - LVU

LVU 簡介:


LVU為LAKE VALLEY UNIVERSITY所開發的行動校園應用,目前版本為1.0(74),此版本提供了七個功能可供使用,此七個功能分別為LVU Online, News, Events, Sports, Directory, Maps, Services ,這些功能中LVU Online需要登入才可使用,所以本篇將跳過對此功能的探討,接下來將逐一探討其餘的功能,而版本則是iphone版本。

  1. News:

  2. LVU的介面都相當簡潔,背景為校園圖示,前景以條列的方式將新聞呈現出來以供選擇,除此之外在每條新聞後面皆有一個小ICON,目的在於顯示是否有圖片或是影片,進入新聞後左邊為標題及內文,右邊則為該新聞相關的圖片或影片,不過如果照片或影片是包含在內文中,將不會有此ICON出現(如附圖)。

    LVU的News並沒有提供搜索功能,而且也無法得知新聞的排列順序為何,進入內文後也無相關的發布單位或是發布時間等資訊,這在未來新聞量增加後將有可能會造成管理以及閱讀的困擾。





  3. Events

  4. Events的功能只是單純的將幾個活動以條列式呈現,並在每則活動的內文做些簡單的描述,最後再將時間附上,無複雜的資訊提供功能,但也是因為如此,在使用軟體時並無法搜尋或是得知時段內或是哪時候的資訊。


  5. Sports

  6. 此功能是將相關運動資訊另外獨立出來提供,同樣的無搜尋功能也沒有任何和分類。




  7. Directory

  8. 簡單的利用字母順序將人員資料分類排序,可點選電話號碼直接將人員名單加入至自己的通訊錄中。

  9. Maps

  10. 簡單的一張地圖圖片,沒有使用目前較為流行的電子地圖系統。

  11. Services

  12. 提供像是圖書館、校警等校園服務的資訊,包含聯絡電話、電子郵件、網頁、開放時間或是地圖等。




LVU Campus APP 不像目前比較多功能的應用,提供了許多即時資訊、智慧搜尋分類等,起而代之的是較為傳統的公告資訊功能,或許更多的功能必須在LVU Online中登入後才可以使用,因為目前使用上的功能不多操作介面相似,所以使用上很容易上手。

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger