每個Connect IQ App,都必須有一個繼承Application.AppBase的class
在VS Code新建專案時,extension一樣會自動生成,就是那個[專案名稱]App.mc的檔案,
在manifest.xml,也會將這個檔案寫在<iq:application>的entry裡面,
例如,專案取作MyFirstWatchFace,
生成的檔案名就會是MyFirstWatchFaceApp.mc,
在manifest.xml裡面生成的內容就會是entry="MyFirstWatchFaceApp"
MyFirstWatchFaceApp.mc除了作為App的入口之外,也控制著整個app的生命週期,
Connect IQ App的生命週期分為四個狀態,
1.Launch
2.Active
3.Inactive
4.Suspended
其中2~4是API level 4.2.0才開始有的,
也就是說4.2.0以前App只有Launch,要就是啟動,不然就關掉,沒有其他狀態
在launch之後,就會將App物件實例化,並可透過Application.getApp()
來呼叫實例化的App物件
在App物件實例化之後,首先會做的動作就是AppBase.onStart(state)
,
接著系統會取得這個app的初始畫面,
通常取得畫面的寫法會根據不同形況而有所不同,
一般會是使用AppBase.getInitialView()
其他則是還有AppBase.getGlanceView()、AppBase.getGoalView()、AppBase.getPlaybackConfigurationView()
範例如下:
class MySuperApp extends Application.AppBase {
// if state contains the :resume key and the value
// is true, then restore app state
function onStart(state) {
if ((state != null) && (state.get(:launchedFromGlance)) {
// Launched from glance
} else {
// Launched from activity menu
}
}
}