行動應用程式設計注意事項

撰寫程式碼與設計時,必須注意行動裝置的操作環境與實體特性。例如,精簡程式碼以儘量加快執行速度,便是需要注意的重要事項。當然,程式碼最佳化有其極限;聰明的設計可以在裝置的限制內,讓視覺呈現不會造成顯示系統的過份負擔。

程式碼

提高程式碼執行速度總是有所助益,多數行動裝置的處理器速度較慢,因此更值得花費時間撰寫精簡的程式碼。此外,行動裝置大部分都是仰賴電池。以較少的工作量達成相同的結果,將可節省電池電力。

設計

設計應用程式的使用者體驗時,應考量許多因素,像是螢幕較小、觸控螢幕的互動模式,甚至是行動使用者不斷變化的環境等等。

同時考量程式碼與設計

如果應用程式使用動畫,顯示最佳化便十分重要。不過,單是程式碼最佳化通常尚且不足。您必須設計應用程式的視覺外觀,以便讓程式碼可以更有效率地顯示。

最佳化 Flash Platform 效能 指南中討論重要的最佳化技術。指南中涵蓋的技術適用於所有 Flash 與 AIR 內容,對於開發可在行動裝置上順利執行的應用程式也十分重要。

應用程式效期

當焦點從應用程式移至其他應用程式時,AIR 會將影格速率降低為每秒 4 個影格並停止顯示圖示。若低於此影格速率,串流網路與 Socket 連線將可能中斷。若應用程式未使用此類連線,可以調整更低的影格速率。

如果合適,應停止音效播放,並移除地理位置與加速計感應器的偵聽程式。AIR NativeApplication 物件會傳送 activate 與 deactivate 事件。使用這些事件可管理作用中與背景狀態的轉換。

多數行動作業系統會在沒有預警的情況下終止背景應用程式。藉由經常儲存應用程式的狀態,不論應用程式從背景返回作用中狀態或是重新啟動,都可將應用程式還原至可接受的狀態。

資訊密度

行動裝置螢幕的實際大小小於桌上型電腦,但行動裝置螢幕的像素密度 (每英吋像素) 較高。若使用相同的字體大小,行動裝置上的字母實體大小會小於桌上型電腦上的字母。通常必須使用較大的字體,以確保使用者能夠閱讀。一般而言,14 點是可以輕鬆閱讀的最小字體大小。

您通常會在移動及光線不足的情況下使用行動裝置。請考慮螢幕實際能顯示的資訊數量。與相同像素尺寸的桌上型電腦螢幕相比,行動裝置所能顯示的資訊量可能較少。

同時也考量使用者觸控螢幕時,手指與手會遮住部分顯示。當使用者必須以較長時間觸控使用互動元素時,請將這些元素置於螢幕的兩側與底部。

文字輸入

許多裝置使用虛擬鍵盤供文字輸入。虛擬鍵盤會遮住部分螢幕,且通常難以使用。避免仰賴鍵盤事件 (軟鍵除外)。

考慮使用其他方法,而不使用輸入文字欄位。例如,若要讓使用者輸入數字,則不需文字欄位。您可以提供兩個按鈕來增加或減少數值。

軟鍵

行動裝置包含數量不一的軟鍵。軟鍵為可由程式控制不同功能的按鈕。在應用程式中使用這些按鍵,請遵循平台的慣例。

螢幕方向變更

行動內容可以直向或橫向檢視。請考量您的應用程式將如何處理螢幕方向變更。如需詳細資訊,請參閱 舞台方向

螢幕變暗

顯示視訊時,AIR 不會自動避免螢幕變暗。您可以使用 AIR NativeApplication 物件的 systemIdleMode 屬性,控制裝置是否進入省電模式。(在某些平台上,必須要求適當權限,才能執行此功能)。

來電

當使用者撥打或接聽電話時,AIR 執行階段會自動將音訊靜音。在 Android 上,如果應用程式在背景播放音效,應該設定應用程式描述器中的 Android READ_PHONE_STATE 權限。否則,Android 不會讓執行階段偵測通話並自動將音效靜音。請參閱 Android 權限

感應區目標

設計使用者可以點選的按鈕及其他使用者介面元素時,請考量感應區目標的大小。這些元素的大小,必須足以讓手指在觸控螢幕上輕易的啟動它們。此外,您也必須確定各個目標之間有足夠的空間。在一般高解析度手機螢幕上,感應區目標區域每邊應大約在 44 像素至 57 像素。

應用程式套件安裝大小

行動裝置安裝應用程式與資料的儲存空間通常遠小於桌上型電腦。移除未使用的資源與程式庫,可最小化套件大小。

在 Android 上,安裝應用程式時,應用程式套件不會解壓縮為個別的檔案。而是在存取資源時,將資源解壓縮至暫時儲存空間。為了最小化此解壓縮資源儲存佔用空間,當完全載入資源時,請關閉檔案與 URL 串流。

檔案系統存取

不同的行動作業系統會實施不同的檔案系統限制,而這些限制通常與桌上型作業系統實施的限制不同。因此,適當的檔案和資料儲存位置也會因平台而不同。

檔案系統不同會造成 AIR File 類別提供的常見目錄捷徑不一定可用。下表顯示可在 Android 和 iOS 上使用的捷徑:

Android

iOS

File.applicationDirectory

透過 URL 唯讀 (非原生路徑)

唯讀

File.applicationStorageDirectory

可用

可用

File.cacheDirectory

可用

可用

File.desktopDirectory

sdcard 的根目錄

無法使用

File.documentsDirectory

sdcard 的根目錄

可用

File.userDirectory

sdcard 的根目錄

無法使用

File.createTempDirectory()

可用

可用

File.createTempFile()

可用

可用

iOS 應用程式的 Apple 原則針對檔案在不同情況應使用的儲存位置,提供特定規則。例如,有個原則是,若檔案包含使用者所輸入的資料或包含無法以其他方式重新產生或下載的資料,則只能儲存在指定做為遠端備份之用的目錄中。如需有關如何符合 Apple 檔案備份和快取原則的資訊,請參閱 控制檔案備份和快取

UI 組件

Adobe 已經開發 Flex 架構的行動裝置最佳化版本。如需詳細資訊,請參閱 使用 Flex 和 Flash Builder 開發行動應用程式

此外,也有適用於行動應用程式的社群組件專案。包括:

Stage 3D 加速圖形顯示方式

從 AIR 3.2 開始,行動裝置版 AIR 支援 Stage 3D 加速圖形顯示方式。 Stage3D ActionScript API 是一組啟用進階 2D 和 3D 功能的低階 GPU 加速 API。這些低階 API 讓開發人員可以彈性地利用 GPU 硬體加速,顯著改善效能。此外,您也可以使用支援 Stage3D ActionScript API 的遊戲引擎。

如需詳細資訊,請參閱 Gaming engines, 3D, and Stage 3D (遊戲引擎、3D 和 Stage 3D)

視訊平滑化

為了提高效能,AIR 上的視訊平滑化功能已停用。

原生功能

許多行動平台均提供尚無法透過標準 AIR API 存取的功能。從 AIR 3 開始,您可以使用自己的原生程式碼元件庫來擴充 AIR。這些原生擴充功能元件庫可以存取作業系統中的功能,甚至是特別為指定之裝置所提供的功能。原生擴充功能可以使用 iOS 上的 C 以及 Android 上的 Java 或 C 來撰寫。如需有關開發原生擴充功能的詳細資訊,請參閱 Adobe AIR 原生擴充功能簡介