私のアプリケーションはメソッドでかなりの初期化を行ってApplication::onCreate()
おり、2 回呼び出された場合に例外をスローするチェックがあります。
ただし、特定の状況では、Application::onCreate()
が 2 回呼び出されます。Log
に次のステートメントを追加しましたonCreate()
: ( instance
is a static variable)
Log.i(TAG, "Application::ctor, this=" + this + " instance=" + instance + " pid="
+ android.os.Process.myPid());
2 つのログを取得しました (通常はinstance == null
):
09-20 19:14:42.151 {main} [INFO] [Application] Application::ctor, this=com.shawnma.MyApplication@428886b0 instance=null pid=10741
09-20 19:14:50.116 {main} [INFO] [Application] Application::ctor, this=com.shawnma.MyApplication@42923e00 instance=com.shawnma.MyApplication@428886b0 pid=10741
この場合、onCreate()
メソッドから戻りました。すべてが常にメモリにあるはずなので、問題はありません。ただし、その直後に別の例外が Android システムから表示されます。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.innopath.mobilemd/com.innopath.mobilemd.ui.LauncherActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java:100)
at android.view.ContextThemeWrapper.setTheme(ContextThemeWrapper.java:51)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2019)
... 11 more
2度目のApplication
創造は目覚めによって引き起こされるALARM_MANAGER
ようです. それでも、アプリの最初の作成が完了し、メモリの場所に保存されている必要がありますか?