Android 为什么要创建两次应用程序?

Android 为什么要创建两次应用程序?,android,Android,我的应用程序在application::onCreate()方法中进行了大量初始化,我有一个检查,如果调用两次,将抛出一个异常 但是,在某些特定情况下,应用程序::onCreate()会被调用两次。我在onCreate()中添加了以下Log语句:(instance是一个静态变量) 我有两个日志(通常,instance==null): 在本例中,我从onCreate()方法返回—它不会有任何影响,因为所有内容都应该始终在内存中。然而,紧接着安卓系统出现了另一个例外: java.lang.Runti

我的应用程序在
application::onCreate()
方法中进行了大量初始化,我有一个检查,如果调用两次,将抛出一个异常

但是,在某些特定情况下,
应用程序::onCreate()
会被调用两次。我在
onCreate()
中添加了以下
Log
语句:(
instance
是一个静态变量)

我有两个日志(通常,
instance==null
):

在本例中,我从
onCreate()
方法返回—它不会有任何影响,因为所有内容都应该始终在内存中。然而,紧接着安卓系统出现了另一个例外:

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

第二个
应用程序
创建似乎是由
报警管理器
唤醒触发的。但是,应用程序的第一次创建应该已经完成并保存在内存位置?

检查您的AndroidManifest中是否指定了其他进程。如果您的应用程序包含两个使用同一应用程序的进程,应用程序中的
onCreate
方法将被调用两次。

您在哪里进行去初始化?我不确定这是否有帮助,但这里描述了类似的错误:我遇到了相同的问题(
Application.onCreate()
调用了两次)在生产中的几个用户设备上。您是如何确定它是由报警管理器触发的?我的应用程序不使用警报,因此在我的情况下可能有不同的原因。您是否找到导致这种行为的原因?或者可能是某种解决方案来修复它?情况并非如此,因为他正在使用静态
实例
变量来跟踪对
应用程序.onCreate()的多个调用。静态变量不会在进程之间共享。还要注意,
pid
在他的每个日志消息中都是相同的。
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
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