系統環境:Ubuntu14.04 / Eclipse + adt
目標環境:Android4.2.2
/**
* Top-level Application class for the Phone app.
* 能從註釋看出來PhoneApp是整個電話應用的核心類
*/
public class PhoneApp extends Application {
PhoneGlobals mPhoneGlobals;
public PhoneApp() { //空的構造方法,也沒有人調用
}
@Override
public void onCreate() {
if (UserHandle.myUserId() == 0) { // 必須是primary user才能初始化phoneGlobals
// We are running as the primary user, so should bring up the
// global phone state.
// PhoneApp的核心作用,持有一個PhoneGlobals類的實例,構造器
// 將context傳入。new的過程中只是執行了父類的構造方法,並將自己保存爲sMe
mPhoneGlobals = new PhoneGlobals(this);
// 真正有用的是onCreate,其實在phone對象不存在時新建一個phone對象
// 另外幾個重要的framework層對象也在這裏創建 mPhoneGlobals.onCreate();
}
}
// 好像是用作屏幕旋轉等時候的配置變化,這裏忽略它的存在,主要研究的是流程
@Override public void onConfigurationChanged(Configuration newConfig) {
if (mPhoneGlobals != null) {
mPhoneGlobals.onConfigurationChanged(newConfig);
}
super.onConfigurationChanged(newConfig);
}
}