UIApplication 簡單筆記
Contents
所有的 iPhone 應用程式都有唯一的一個 UIApplication instance,這個 instance 提供 GUI 程式訊息(Event)處理的主迴圈(如果你寫過 Win32 sdk 程式應該很清楚這玩意),和一些 屬於應用程式的外觀設定和行為,如 status bar, Application Icon Badge Number [1] 等等。
[1] | Application Icon Badge Number: 顯示在應用程式Icon上面的數字(見下圖)。 |
常用的功能
UIApplication 會用到的東西其實沒有很多,這邊簡單介紹一下常用的部份。
取得 application instance
前面有提到在 iPhone 應用程式中有唯一的一個 UIApplication instance , 要存取諸如 status bar 目前的位置狀態或是設定註冊 Push Notification [2] 等等。
如何取得? 很簡單 copy 下面的 code 就好,不會有第二種寫法,也完全不用考量什麼 記憶體管理。
UIApplication *app = [UIApplication sharedApplication];
[2] | Push Notification: iPhone 3.0 新增的功能,用來唬爛可以滿足部分多工需求的功能。(好啦,是真的還不錯) |
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 的責任,這部份比較複雜一點點, 礙於好文章不可以離題太多的原則下小弟提供連結請自行參閱。
自動睡眠功能
基於行動裝置電力有限的原則下,還有全球節能減碳的潮流,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 是什麼? 看圖最清楚:
控制他顯示與否:
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 是個很簡單易懂也十分重要的,希望這篇會有幫助。
沒有留言:
張貼留言