版權聲明

所有的部落格文章都可以在右邊[blog文章原始檔案]下載最原始的文字檔案,並依你高興使用 docutil 工具轉換成任何對應的格式方便離線閱覽,除了集結成書販賣歡迎任意取用,引用

UIApplication 簡單筆記

UIApplication 簡單筆記

所有的 iPhone 應用程式都有唯一的一個 UIApplication instance,這個 instance 提供 GUI 程式訊息(Event)處理的主迴圈(如果你寫過 Win32 sdk 程式應該很清楚這玩意),和一些 屬於應用程式的外觀設定和行為,如 status bar, Application Icon Badge Number [1] 等等。


[1]Application Icon Badge Number: 顯示在應用程式Icon上面的數字(見下圖)。
http://s3.amazonaws.com/ember/z8rUpj61JahRnPFpD7IdEAglHUSgaywj_m.png

常用的功能

UIApplication 會用到的東西其實沒有很多,這邊簡單介紹一下常用的部份。

取得 application instance

前面有提到在 iPhone 應用程式中有唯一的一個 UIApplication instance , 要存取諸如 status bar 目前的位置狀態或是設定註冊 Push Notification [2] 等等。

如何取得? 很簡單 copy 下面的 code 就好,不會有第二種寫法,也完全不用考量什麼 記憶體管理。

UIApplication *app = [UIApplication sharedApplication];
[2]Push Notification: iPhone 3.0 新增的功能,用來唬爛可以滿足部分多工需求的功能。(好啦,是真的還不錯)
http://s3.amazonaws.com/ember/L8Qw77hQrGZpYuDwTgdTB3qBBZhHZLZF_m.png

Apple Waves 有篇十分精采的解說 (連結請自便)

http://applemacnews.mysinablog.com/index.php?op=ViewArticle&articleId=1884149

搖晃 undo 設定

iPhone 3.0 新增的酷炫功能! 搖晃手機 undo也是在 UIApplication 裡面設定的。

UIApplication* app = [UIApplication sharedApplication];
// 是的!搖晃時 undo
app.applicationSupportsShakeToEdit = YES;

push notification

註冊 push notification 也是 UIApplication 的責任,這部份比較複雜一點點, 礙於好文章不可以離題太多的原則下小弟提供連結請自行參閱。

Push Notification Guild

自動睡眠功能

基於行動裝置電力有限的原則下,還有全球節能減碳的潮流,iPhone 應用程式一般 來說一定時間沒有使用會直接進入睡眠狀態,Apple 的文件是說除非你真的十分確定 你要關閉才關,如何關閉這功能? 請看範例:

UIApplication* app = [UIApplication sharedApplication];
// 關閉自動睡眠計時器
app.idleTimerDisabled = YES;

status bar 的控制

我們都知道 iPhone 可以知道自己在旋轉,並針對垂直或水平提供不同的畫面佈局, status bar 的相關設定用法如下:

UIApplication* app = [UIApplication sharedApplication];
app.statusBarOrientation = UIInterfaceOrientationLandscapeLeft;

ok 想要隱藏 status bar的話,也很簡單:

UIApplication *app = [UIApplication sharedApplication];
app.statusBarHidden = YES;

當然啦這種布林狀態的東西常常需要的動作其實是 toggle,也很簡單:

UIApplication *app = [UIApplication sharedApplication];
(app.statusBarHidden) ? (app.statusBarHidden = NO) : (app.statusBarHidden = YES);

控制 network active indicator

Network Active Indictor 是什麼? 看圖最清楚:

http://s3.amazonaws.com/ember/ldirB5V2vk3jHl1kzMIAviadwB1VdOBj_m.png

控制他顯示與否:

UIApplication *app = [UIApplication sharedApplication];
(app.networkActivityIndicatorVisible) ? (app.networkActivityIndicatorVisible = NO) : (app.networkActivityIndicatorVisible = YES);

Background

iPhone OS 4.0 的新特色--多工,因應這個新東西 UIApplicaiton 也提供一些背景執行 需要的功能和資訊。

properties 方面

applicaitonState 可以得知目前應用程式所處的狀態如 active, background 等等 下面是完整的資訊:

typedef enum {
   UIApplicationStateActive,
   UIApplicationStateInactive,
   UIApplicationStateBackground
} UIApplicationState;

backgroundTimeRemaining 顯示應用程式剩餘多少時間進入 background 的 suspended 狀態。

iPhone OS 4.0 允許應用程式進入背景後要求額外的系統資源 (cpu time) 來處理額外或是比較 大量的工作,由下面兩個 method 處理這方面的要求和結束要求,記住系統資源是有限的,記憶體 如此, cpu time 亦是如此,請明確使用 endBackgroundTask: 來釋放多工的系統資源。

小結

UIApplication 是個很簡單易懂也十分重要的,希望這篇會有幫助。

沒有留言:

Related Posts with Thumbnails