1
從我對Java的理解中,應該在任何其他函數之前執行靜態塊。Android - Static Block不被首先調用,爲什麼?
我有一個靜態塊調用一個靜態函數,無論是在類MyClass.java,它使用SharedPreferences對象。
MyClass由MyApplication(Extends Application)使用,位於onCreateMethod的某處。
static {
doSomethingStaticFirst();
}
private static void doSomethingStaticFirst() {
//Log(DO_SOMETHING_STATIC_FIRST)
UserPreferences userPreferences = new UserPreferences(MyApplication.getInstance().getApplicationContext());
}
但是我看到以下日誌依次是:
- MyApplication的onCreate方法
- 的DatabaseManager的onUpdate(如果DB版增加)
- DO_SOMETHING_STATIC_FIRST
有爲什麼不首先執行靜態塊?將首先執行MyApplication onCreate
方法嗎?
您所顯示的代碼是哪一類?它在'MyApplication'中嗎?它在'DatabaseManager'中嗎?它在別的地方嗎? – CommonsWare
其他地方,MyApplication使用的類 – htafoya
可能的重複[何時是一個類的靜態塊被執行?](http://stackoverflow.com/questions/9130461/when-is-the-static-block -of-A級執行的) – Krease